Help, pls

57 отговора 4 прегледа
в отговор на Джейн #21

Help, pls

Ами май е най-добре да започнеш с добрия стар Кнут или някой друг класически труд по основите на програмирането. Не знам защо, но повечето хора като чуят програмиране и си представят кодиране. Значи, както е известно на всеки себеуважаващ се програмист, в създаването на завършен програмен продукт обикновено има поне две ясно различими фази - измисляне на алгоритъм (което, ако решаваш интересен проблем, почти никога не е свързано с езика за програмиране, смея да твърдя, че дори не е свързано с операционната система) и кодирането му на подходящ програмен език. Наистина, щом смяташ да правиш относително прости неща, не ти трябва много да дълбаеш в теорията, защото можеш просто да си представиш горе-долу как ще станат нещата и да ги опишеш на любимия си език. И въпреки това не подценявай теорията - обикновено е трудно да я научиш, но след това си като с развързани ръце - можеш да правиш всичко, което искаш, да оценяваш новите технологии и тенденции в програмирането и т.н. Съгласен съм с Любомир Ганов, че само с теория не може, и че обектното програмиране е задължително, и затова ти препоръчвам да опиташ с Java. Пиша на Java от около две години (за удоволствие) и не мога да спра да й се възхищавам. За разлика от динозаврите като C и C++, в Java всичко е направено както трябва - не се налага да се занимаваш с глупости като управление на всички динамични променливи (не е нужно лично да освобождаваш взетата памет, след като си свършиш работата с нея), явни указатели, масиви с фиксиран размер и други отживелици. Освен това библиотеките в JDK 1.2+ са много добре измислени. Просто платформата е модерна и е правена от истински професионалисти и затова не се налага да се съобразява с остаряли технологии. Някои казват, че Java е бавна - да, в някои ситуации (най-вече в графичния интерфейс) наистина е така, но това почти никога не е сериозен проблем, а и като гледам с каква скорост се развиват компютрите и самата Java, съвсем скоро никой няма да се оплаква от производителността й. Ако искаш да научиш какво мислят професионалистите, използващи Java, иди на [линк]
Отговор
в отговор на Джейн #22

"The best thing about standards ...

... is that there are so many of them to choose from" :-)) no pone za pascal na dos/win platforma standarta e edin i e nalojen ot borland! Spored men nqma kakwo tolkowa da se chudish, ami naprawo se zahwashtai s neshto. Nai-dobre C++ zashtoto na nego nawsqkyde se gleda s dobro oko... a sled towa i javata nqma da ti e nikakyw problem. Oswen towa C ne e tolkowa truden, po-skoro nqkoi gospoda obichat da syzdawt oreol na zagadychnost okolo sebe si :))
Отговор
в отговор на Джейн #23

Help, pls

Za C++ imashe njakolko mnogo svestni knizhki na bg. Mozhe bi njakoi ot tjah oshte se namirat po Slavejkov. Po trudnoto pri nego e da se shvane Obektno-Orientiranata Koncepcija. Shte potyrsja da ti dam njakoi zaglavija Inache i vyv VC++ i v Borland C Builder (i kakvoto i da e za programirane pod Windows) ima ogromno API (Application Programming Interface - nabor ot gotovi za izpolzvane proceduri i funkcii) koeto trjabva da se uchi. Tova malko "razsejva" ot syshtinskoto izuchavane na obektite i svoistvata im.
Отговор
в отговор на Potencialen emigrant #24

Извини ме, това е шега...

Samo malyk komentar: Ponjakoga e po dobre chovek da zapochne napravo da izuchava OOP "Strukturnoto" mislene mozhe da zatrudni vyzpriemaneto na OO Model
Отговор
в отговор на Fomalhaut #25

Pascal?

Problemyt e, che ne sa se zasilili da go puskat :-( Uj shteshe da e gotov za yuni, yuni mina otdavna, a ot Borland - ni vopyl, ni ston! Neshto may sa go pozaryazali, ot tova se strahuvam :-(
Отговор
в отговор на Масклин #26

Help, pls

Вече имах удоволствието да споделя, че Кнут едва ли ще напише още някой том защото програмирането като изкуство изчезва и се превръща във бизнес и занаят. Все по-малко хора се интересуват от програмиране. Интересът е към писането на програми, на запад му викат кодиране. Можете ли да ми кажете кога за последен път сте видели някоя новоизлязла книга, която не е за определена програма, операционна система или език за програмиран, а книга свързана наистина с Програмирането, където ако има някакви сорсове те са само за илюстрация, а алгоритмите може да са написани на български, руски, английски или какъвто там е езика на книгата. Не че такива книги въобще няма, просто не можем да ги видим на пазара в България поради липса на интерес (може би). Ако вече сте прегледали книгата на М.Канту за Делфи5, сигурно ви е направило впечатление, че за най-интересните неща обикновенно пише: "... няма дя се задълбочавам в тази тема, зажото за нея може да се напише цяла книга." Ей такива книги трябват, не за езиците, а за технологиите. В момента някой като започне да говори за технологията ООП веднага кимат с глава и казват: "Аааа ясно - C++". Не е така разбира се. Както и навремето като се кажеше структурно програмиране, за повечето това означаваше Паскал (разбирай борландски). Просто това са нистина най-добрите реализации. По въпроса Паскал - C++. Последната версия на Паскал, която съм виждал е Borland Pascal 6.0. Паскала е една страхотно красива реализация на идеята за структурно програмиране и с него наистина алгоритмите и структурите могат да се описват съвсем естествено. Ще кажете - ами goto? GOTO преходите също са съвсем естествени в някои алгоритми и трябва да има средство за описването им. За справка вижте и мнението на Н.Вирт във "Алгоритми+Структури от данни=Програми".Страхотна книга. Ако я нямате - идете в някоя библиотека и си я вземете, а след това платете глобата че сте я загубили. Ще свърши по-полезна работа отколкото да прашасва и да я изхвърлят накрая. Та версията 7.0 е вече нещо, което заради обектната идея вече не е Паскал, но не е и C++.Нито риба, нито рак. Делфи вече е нещо което е много повече C, отколкото Паскал. Предполагам че в Borland са решили да го правят паскалски поради чисто маркетингови причини - те са номер 1 при Паскала, докато при С нещата са доста по различни. В момента като че ли няма нещо толкова красиво и изискано в света на ООП, както беше Паскала.Може и да греша разбира се. Един съвет към емигранта, ако наистина все още учи във ФМИ. Ако Краси Манев все още води спецкурсове - проучи ги. Навремето, в началото на научната си кариера ни водеше страхотен курс по теория на алгоритмите. Хайде, че ми свърши почивката.
Отговор
в отговор на NumLock #27

Help, pls

Ami az priklyuchih s izpitite. Mislya, che Manev veche vodi samo Diskretna Matematika. Ne znam koga si zavyrshil, no sega ima mnogo kursove po teoriya na algoritmite. Az sym hodil na 3 - Teoriya na Programite, Analiz i Sintez na Programi i Slojnost na Algoritmite. V specializaciya Teoretichno Programirane ima oshte tolkova, sigurno :-) Hubavoto na FMI-to e, che dori Programiraniyata v I kurs se vodyat malko po-nezayatchiyski. Da ne govorim za Ezici za Funkcionalno i Logichesko Programirane - na pryv pogled se uchat Lisp i Prolog, a vsyshtnost predmeta si e vse edno uprajneniya po grafi i gramatiki :-))) Izobshto, FMI-to beshe hubavo... Uvi, veche dori asistenti za Prolog ne se namirat :-(((
Отговор
в отговор на NumLock #28

hum

Е, недей така... Просто Кнут е казал каквото има да каже за програмирането и след това се е захванал с измисляне на полиграфски езици - сигурно си чувал за TeX :). Не мисля, че по-малко хора се интересуват от програмиране; просто броя на хората, които използват компютри в работата си натраства по-бързо, отколкото броя на професионалните програмисти - и това е нормално и радващо (поне за мен), защото означава, че компютрите стават ежедневие и се използват навсякъде. Освен това никой не трябва да съди за света по състоянието в България - точно както казваш, в България вече няма интерес към Програмирането, просто защото страшно много програмисти отидоха в топлите страни :), за да живеят като бели хора. Самият аз работя в една от издателските къщи и знам защо не се издават добри книги с теория - просто няма кой да ги купи, а от книгите от типа MSOffice си купуват всички - като почнеш от секретарките и стигнеш до където се сетиш... и пак казвам - това е нормално, просто защото хората, на които трябват тези книги, са много повече от професионалистите. Виж в Щатите, където има 300 милиона маймуни, няма проблем да се намерят достатъчно хора, които да изкупят тираж, от който фирмата-издател да спечели и да си струва да издава хубави книги. А за ООП - препоръчвам ти най-горещо Java. Наистина си струва да я разгледаш. Краси Манев наистина е доста добър. Хайде, че трябва да си лягам :)
Отговор
в отговор на NumLock #29

Джейн

Много интересни неща са ти написали, особено NumLock и Масклин. Заедно с компилатора (който е Борландския 7.0) следващият път, когато се видим, ще ти дам и книгата на Вирт - наистина е много ценна. А томовете на Кнут ги има в бибилиотеката на Мошков. Много се изкефих, като ги видях, и веднага си ги свалих. Навремето ми трябваха за изпита по Алгоритми, и едни познат на Слайвейков ми искаше астрономическа сума за тях... Така че взех изпита без помощта на Кнут :-) А по отношение на Паскал - никой от тези, които те съветват да започнеш с обектно-ориетнирано програмиране, не е започвал със C++. Програмирали са дълги години на Pascal и дори Basic, за да станат това, което са в момента (за програмистите говоря). Ако някой е започнал направо със C++, значи не се занимава от достатъчно много години с програмиране, следователно - още има жълто около устата :-)
Отговор
в отговор на Джейн #30

какво можеш да си позволиш?

не можеш да си позволиш да следваш - можеш ли да си позволиш компютър? щото иначе - забрави. това, което трябва да направиш е следното: 1.инсталираш си някаква свястна среда за програмиране - аз лично бих ти препоръчал MS Visual Studio 6.0, ако компютъра ти не е много зле, защото вътре има поне два езика, един куп нови (или сега навлизащи масово) стандарти и т.н. и т.н. 2. взимаш книгата на Вирт "Алгоритми + ..." не я помня, тук се говореше за нея, но наистина е добра, научаваш Паскал - това е лесна работа - той си е кажи-речи английски и в крайна сметка има точно 7 важни думички в него, вкл. "begin" и "end". 3. опитваш се да напишеш описаните там алгоритми във Visual Studio-то. по-добре пробвай с Basic-a. По-лесен е и дълго още ще се пише на него, по ред причини.
Отговор
в отговор на Джейн #31

Help, pls

kakvoto i da izbere, ima edin sqshtestven moment - samo po knigata ne mozhesh da se nauchish. bez realen primer, vqrhu koito da rabotish, shte stane kato kucheto i kasapina.
Отговор
в отговор на Масклин #32

Несъгласен с някои неща

На първо място изкуството Програмиране не е мъртво. Поне за мен. Винаги влагам творчество в работата си - доставя ми удоволствие да се стремя програмата ми да изглежда красива. Което ме навежда на мисълта, че реализацията на алгоритъма МНОГО често е свързана с езика за програмиране. Тук се появява едно понятие - "гъвкавост", т.е. възможност лесно да се кодират всякакви идеи. В дългата си практика съм минал през много езици, преди да открия C++. Струваше ми усилия да го разбера и да се науча да пиша ефективно на него, но както се казва, "Тяжело в учении - легко в бою" - сега без усилие реализирам всичко, което ми хрумне, при това кодът е бърз, красив, понякога и къс :) Колкото е по-високо нивото на езика за програмиране, толкова повече се налага борба с недостатъците и ограниченията му, борбата поражда кръпки и тонове допълнителен код, в крайна сметка резултатът е плачевен. На всички е ясно, че ако се пише директно машинен код програмите ще са максимално бързи. После са асемблерните езици, след тях е C/C++. Много след C са паскал, ада и т.н. Много след паскал са VB, Java и др., идеята на които е генерирането на машинно независим код, за изпълнението на който е нужен машинно-зависим интерпретатор. От тук следва, че за доста неща псевдокодът е твърде лошо решение - много глупаво (понякога - невъзможно) е с негова помощ да се пише операционна система, по-сложен сървър с голямо натоварване (примерно SQL, game, chat или дори web), приложения с голяма консумация на процесорно време - игри, производствени и контролно-измервателни и управляващи системи. Иначе въпросът с обучението е прост - обучението просто трябва да е процес на постепенно осъзнаване. Излишни са разни курсове и следвания, тъй като там те карат да УЧИШ, а не да разбираш. Повечето хора наистина започват с паскал - той СПЕЦИАЛНО е замислен като език за обучение - лесен е за възприемане :) Не съм съгласен със мнението, че няма книги за технологии. Отидете и си купете "Програмиране с Visual C++ 6.0". В тях се описват ЕДИНСТВЕНО технологии и няма и ред специално за C++. Не знам защо се превъзнася Краси Манев - преподаваше ми дискретна математика докато си губех времето със следване и не ми изглеждаше нещо особено - преподавател като всички останали.
Отговор
в отговор на jam #33

Help, pls

Наистина без компютър е невъзможно да се учиш. Ако има начин да разполагаш дори и със слаба машина имаш няколко по-скромни възможности:MS Access, HTML и Perl /под Windows/ например. А ако се намери някой компютър с Linux/пак с относително слаб хардуер/ там вече може да се понаучиш на C, Perl и т.н., което е добре. За визуалните среди .....ако започнеш с тях няма да разбереш нищо от идеологията на нещата свързани с програмирането /ако разбира се искаш да разбираш, а не само да copy/paste-ваш код/. И най-важното е да не се хвърляш на много неща. Хвани едно нещо /препоръчвам ти Perl, защото е мощен в доста отношения, няма указатели и е предвиден за Интернет приложения/ ама да го научиш добре.
Отговор
в отговор на МиГ-31 #34

Несъгласен с някои неща

Не ти е направил впечатление, защото ти е преподавал дискретна математика в първи курс - поне навремето тогава я учехме. Със същия успех би могъл да ти преподава и аналитична геометрия (брррррррррррр) или да кажем анализ първа част. Аз едва в четвърти курс можах да оценя преподавателя си по линейна алгебра и това колко съвременен курс ни е чел по този предмет, който общо взето се смята за нещо лесно и просто. Ако караше някой спецкурс при Манев, едва ли мнението ти щеше да е такова. А следването никога не е губене на време - особенно във ФМИ, макар че като се сетя от моите преподаватели и колеги кои отидоха в чужбина и кои останаха във факултета и в института...
Отговор
в отговор на NumLock #35

всеки си има мнение

Оценявам преподавателите, които учат стойностно. Каква е ползата от някой, който идва, декламира ти някой учебник и си отива? Сега, например, бих оценил някой, който ме накара да разбера апартаментите и нишковите модели в COM.
Отговор
в отговор на МиГ-31 #36

Несъгласен с някои неща

За Краси Манев - мисля, че е много добър в кодирането, но останалите неща ги претупва. Посещавал съм негови лекции, въпреки че не следвах в Университета. Имах голямото щастие да ми преподава дискретна математика в ТУ проф. Табаков - едно съвсем различно ниво...
Отговор
в отговор на Lazy #37

Несъгласен с някои неща

Съвсем различно ниво? И какво - по-ниско ли?
Отговор
в отговор на МиГ-31 #38

Бау!!!

Ех мосю Нанев, не мога да се стърпя. Наистина много хора правят така, че алгоритъма им да е свързан с езика на програмиране, което за мен е очевиден знак за лош подход към програмирането изобщо. Освен това е пълна глупост мнението, че на колкото по-високо ново е даден език за програмиране, толкова повече трябва да се борят горките програмисти, за да постигнат каквото искат. Има всякакви езици от високо ниво, всеки от които е създаден за някаква определена цел и най-често е много добър за нея. Е, ако се опитваш да забиваш пирони с хард-диска си... Да не говорим, че съвсем не е ясно, че програмите, написани от ЧОВЕК на машинен код са по-бързи от компилираните, а и не ми е много ясно защо правиш разграничение между асемблер (забележи, не казвам макро-асемблер, но и там няма съществена разлика) и машинен код. Първо, не всеки умее да пише добре на асемблер; освен това, ако смяташ, че всеки път можеш да натовариш конвейрите на процесора по оптимален начин - значи или си гений (което не го вярвам), или си луд за вързване, който губи по един месец, за да напише програма, която е с 5% по-бърза от аналогичната програма, която може да се напише за няколко дена на (да речем) Watcom или GNU C. Всъщност има едно много по-важно нещо и то се нарича динамичното оптимизиране. Казано с две думи, оказва се, че много често е по-добре кода на програмата да се променя по време на самото й изпълнение, отколкото да се направи някакво статично оптимизиране по време на компилирането й. Освен това, езиците като Java имат страшно много предимства благодарение на факта, че се интерпретират - за повече подробности виж [линк]; не се смятам за достатъчно квалифициран, за да ги хваля сам. А и какво значи машинен код - както всички знаем, процесорите не изпълняват елементарни инструкции като + - и mov, а значително по-сложни псевдо-кодове; наскоро Transmeta създадоха процесор, на който можеш да програмираш макрокода и лесно да го накараш да работи като x86 или PowerMAC - the choice is yours. И този процесор е толкова добър, че всички основни хардуерни компании проявиха силен интерес и още при обявяването му казаха, че ще предлагат машини, базирани на него.
Отговор
в отговор на Масклин #39

хаха

"както всички знаем, процесорите не изпълняват елементарни инструкции като + - и mov, а значително по-сложни псевдо-кодове" Какво значи "елементарни инструкции"?:) И как така ще изпълняват псевдо-кодове?:) Иначе идеята на Transmeta не е лоша, но не е нова. Бордовият комп. Ц100 на повечето руски летящи бойни машини 4-то поколение е реализиран точно на този принцип: има 4 нива на инструкции: ядро, инструкции с по-сложна структура, спец, оператори (обмен, ОС) и потребителски оператори. Т.е. всяко ниво от програмното осигуряване се реализира машинно:) Броят инструкции варира от 157 до 256 в зависимост от предназначението на самолета. Ясно е едно - последните 3 нива са надстройки на първото. Процесорът на Transmeta също има ядро, което не е свързано нито с PowerPC нито с x86. Наборът инструкции за всеки друг процесор всъщност е машинно реализиран емулатор.
Отговор
в отговор на МиГ-31 #40

ох...

Явно говоря много неясно. Като казвам прости инструкции имам предвид инструкции като за машина на Тюринг. Като казвам псевдо-код, имам предвид инструкции, реализирани вътре в процесора като няколко други (по-прости инструкции). Естествено, не е задължително простите инструкции да са чак толкова прости. Колкото до процесора на Трансмета - в него няма предварително кодирани схеми за емулиране на x86 или PowerPC - създателите му (един от които е Линус Торвалдс) не са чак толкова тъпи. Просто е възможно чипа да се програмира така, че да изпълнява код за някой от споменатите или други процесори.
Отговор