|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 5:20 pm
Подходящ език за начинаещи
| Автор |
Съобщение |
|
CM600
Ранг: Новодошъл
Регистриран на: Пет Окт 21, 2005 9:35 pm Мнения: 152 Местоположение: Варна
|
_________________ LDAA
|
| Чет Юли 13, 2006 1:00 pm |
|
 |
|
rumen
Ранг: Почетен член
Регистриран на: Чет Ное 25, 2004 3:42 pm Мнения: 913
|
пик срещо атмел.
Бейсик срещо С.
хардуеристи срещо софтуеристи.
нищо страшно
Единство и борба на противоположностите.  Двигателя на прогреса.
Евала Zdrav
да избягваме чуждиците е мъдро
|
| Чет Юли 13, 2006 1:07 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
Значи аз имам доста пресни спомени за сблъсъка си с програмирането и да сложа моите 5 стотинки.
Преди около 4 години реших да се преквалифицирам от хардуерист на програмист.
Реших да почна с visual C++.
Това беше холяма грешка. Самостоятелно тази боза много трудно се разучава,може би ако англииския ми беше почти толкова добър като българския щях да се справя доста по бързо с началното навлизане.
Моя съвет ако сега се започва с програмиране в никакъв случай не трябва да се почва с тая майкрософтска боза.
Изключение е ако имаш наблизо професионалист който да ти помага като закъсаш,няма ли такъв от това ще дръпнеш много назад и се придобиват вредни навици дето ти пречат и занапред. За останалите среди за програмиране за PC намам наблюдения и не мога да кажа.
Сега се заглеждам по C# и чета като имам време. Може би това е малко по приемливо като за начинаещ но като за бъдещ ембеддед програмист си мисля че ще изгради доста вредни навици.
Преди 3 години започнах да се занимавам с пикове. Започнах директно на C защото го познавах вече. Като си спомням какви глупости правех в началото и колко време ми отиваше да си изясня защо става така си давам сметка че пак съм поел по грешната пътека. Непознаването на асемблера ми костваше купища загубено време.
Най накрая седнах и научих асемблера на ATmega. Това е най простия и приятен асемблер от всичко което съм пипал досега. Мога да сравня с PIC,ARM и донякъде познавам и асемблера на MSP430.
Но работата ми наистина започна да спори и да осъзнавам добре нещата едва след като написах първите си програмки на асемблер на първата ATmega16 с която се запознах. И досега си намирам вредни навици дето съм ги придобил докато съм писал на C без да съм се занимавал с асеблер преди това.
Мнението ми което съм си изградил от горепосочените наблюдения е че ако някой иска да пише ебмеддед най удачно е да започне с асемблер. И най удачния процесор с който може да се започне е AVR. Edna mega16 w dip корпус е перфектно начало. Jtag задължително,поне не е скъп пък може и сам да си го направиш.
А ако ще се става изключително PC програмист познаването на асемблера изобщо не е задължително по мое мнение. Там нещата с много абстрактни и няма необходимост от това.
|
| Чет Юли 13, 2006 1:08 pm |
|
 |
|
miro_atc
Ранг: Форумен бог
Регистриран на: Нед Фев 26, 2006 6:52 pm Мнения: 11266 Местоположение: Добрич
|
Всеки има някаква история... моята също е дълга, започнах с Бейсик и едни компютри наречени Имко (после ги прекръстиха на Правец 82).
Не мога да кажа че съм програмист, но съм програмирал на какво ли не... Според мен програмирането е начин на мислене. За да можеш да мислиш са ти необходими само елементарни знания и основни правила. Ако някой тепърва започва бих препоръчал следния път:
1) Ако има желание да научи основните компоменти на електрическите схеми и по-специално активните елементи от сорта на транзистор и как се прави ключ.
2) Горното е в основата на логическите елементи. Добре е човек да е наясно какво е схема И/НЕ/ИЛИ. Тия неща математически са в основата на булевата алгебра, а на хардуерен език това е "кобинаторна логика".
3) Хардуерът се дели на два вида - комбинаторна логика и логика с памет. Така че добре е да се знае що е то логика с памет или т.н. автомати. Без тях, няма програмиране...
До тук ако се научи всичко това човек може да придобие елементарна представа как работи един компютър и какво точно означава за един компютър програмиране. Но.... повечето програмисти не си правят тоя труд, така че всичко това може да се прескочи.
Това което един програмист трябва да задължително да знае са различните видове езици за програмиране.
На първо място са езици от ниско ниво, т.е. машинен код или асемблер. Важно е да се знаят принципно тия неща, не за друго ами като напише нещо на език от високо ниво да види каква я е свършил компилатора.
За предпочитане е да се работи на език от високо ниво. Какъв точно е въпрос на вкус, но всеки програмист трябва да знае че има алгоритмични и неалгоритмични езици, да знае какво е това обектно ориентиране и т.н.
Добре е човек да напише една малка програмка на асемблер (независомо кой), една проста програмка на C, нещо просто на C++, нещо на Prolog, ако ще и на Basic или Pascal, па чак тогава да решава къде ще задълбава. И независимо какъв ще му е основния език на практика, задъжително трябва да познава поне малко на теория останалите.
Тук много хора казват че започнали с еди кой си език и сгрешили. Просто не започвайте само с един език. Опознайте концепциите на различните видове езици, преди да задълбаете някъде. Няма грешни езици... има езици които владееш и които не владееш.
Самото програмиране е нещо като каране на колело. Веднъж схванеш ли как става, от там нататък е леко.
Аз лично нямам любим език и по-скоро мисля че всички езици са зле. Мисля си че трябва да се измисли нова концепция за моделиране. Всички езици като идея са от годините на баба ми и няма почти нищо ново под слънцето.
В хардуера не е така - след като навлезе VHDL/Verilog се промени изчяло начинът на мислене и моделиране в резултат на което производителността скочи революционно. Очаквам подобно нещо да стане и в софтуера.
|
| Чет Юли 13, 2006 3:06 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30685 Местоположение: София
|
Реконструкторе, там от където съм работил нямам желание да обсъждам кой как и какво е писал, но това което казвам е факт, не само въз опснова на наблюденията ми там а и на много други неща.
Относно изказването ти за PWM точно това искаш да ти обесня, PWM най малкия му проблем е да накараш импулса да си мени запълването, въпроса е да занесш кога защо и как да го мениш, какво става как от PWM да получиш линеен сигнал и т.н. самия PWM сам по себе си е почти неприложим. не говоря само за това, примери много, сигурно като си си писал първтаа програма която ползва ADC си превключвал канали и си пускал мерене без да чакаш, естествено резултатите сигурно са идвали странни .... може пък и да си прочел че трябва да се чака, но съм забелязал много хората не обичат да четът, вкл и ти, без да се обиждаш. Решаването на еидн проблем иска много четене и анализ на самия проблем, писането на програмата е най-лесната част от задачата.
А относно тов акакво е ембедед, да наистина понятията доста се сляха, вече телефони минават за ембедед програмиране, нещо обаче не си представям ембедед продукти дето трябва да ги рестартваш ли да им вадиш батерията. Преди това понятие се ползваше основно за контролери и то с отговорно предназначение, най-вече защото там навлязаха първо микроконтролерите, не за друго, и малк или много всеки който се заниамва от дълго време това му е на акъла. Иначе и играчките по магазините пак са ембедед ако погледнеш. Но все си мисля че хората тук се заниамват с в малка или по голяма степен със сериозни приложения, а не с детски играчки или таймери за печка.
М-у другото точно в момента се сблъсквам с едно подобно гениално творение, не знам дали го е правил софтуерист който се епреквалифицирал, или хардуерист няма значение, но е идеалноонагледяване. Система за оповестяване, има входове, в случая около 100, от другия край бутони, човека чисто и просто е набутал преместващи регистри кум един ПИК, вързал е кабелите, както може би се сещате десетки, а някои стотици метри директно към регистрите и пей сърце. Да не е било проблем да напише софта, да му сложи LCD и т.н. но липсата на опит определено му е била в повече. Това у-во което работи идеално на масата, в реални условия не иска. При всеки гръм по близо някой регистър си заминава. Освен това кабелите които минават в близост до силови трасета индуцират достатъчно смущение за да се получи лог.1, освен това нямаш никакъв мониторинг на проводниците и на бутоните. Е ... може ли това да е работеща система, за мене не. Всеки който имаше малко опит или поне беше почел щеше да съобрази възможноите проблеми, а не като тоя да буха софтуерни филтри които не могат да му решат проблема.
|
| Чет Юли 13, 2006 4:27 pm |
|
 |
|
sthx
Ранг: Форумен бог
Регистриран на: Съб Юни 24, 2006 8:25 pm Мнения: 2292
|
Въпросът беше с какво да започне един начинаещ. Не се считам за програмист и не смея да давам съвети, но зная, че ще завърша с Асемблер. До сега не намерих причина да уча С примерно. Криво ми е да мисля на Асемблер , а да пиша на друг език.
И аз съм минал етапите на перфокартите, Кривец 8, касетофона, скъпоценните дискети 5 1/2.
Използвам само един тип процесори (Моторола - Free Scale). Разлика от цените от няколко левчета, или както е сега - стотинки, не ме интересува. Още повече, че цените зависят повече от търговците, отколкото от производителя. При дребносерийното производство преобладаващи са разходите за разработка, за кутии, транспорт и други подобни. Годишно правя (преправям) няколко (3-4) устройства. Новите схеми ги съобразявам по възможност с вече разработени програми - все пак управлението на клавиатурата и индикацията използват значителна част от ресурсите. Коментари почти не пиша. Имената , които използвам в програмата ми говорят достатъчно. Сигурно на повечето по-млади колеги ще им се стори ненормално, но програмите си ги чета почти като вестник. Миналият месец преправих програма от около 6000 реда (8.5К) от HC11 за HC08. Програмните им модели се различават доста и са в полза на HC11. Отне ми около 1 седмица. Ako бях избрал HC12, тази операция щях да я направя за 2-3 часа.
Интересно ми мнението на по-грамотни от мене колеги, дали при тази ситуация си струва(ше) да уча език на високо ниво.
За мене по-важните проблеми са не с какво, а какво и с какви характеристики да се направи. Формирането на добро техническо задание е половин свършена работа и като цяло този етап често отнема повече време и средства от самото проектиране и програмиране.
Въпреки образователната ни система (особено напоследък), считам че човек, ако има желание ще постигне добри резултати, независимо от първоначалният избор на средствата. И отрицателният опит е от полза. Човек се учи по-добре от грешките си, отколкото от съветите на другите.
|
| Чет Юли 13, 2006 10:36 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30685 Местоположение: София
|
Ами въпреки че позлваш основно един процесор като архитектура, и може би с годините доста си изшлайфал асемблера, мисля че ако минеш на С ще ти е много по леко не амо преправянето но и писането. Определено има неща който на аемблер отнемат време, не друго, освен това грешките зачстяват, чисто синтактичните грешки. А за четимост, добре написана асемблерска програма се чете, но все пак не мисля че може да се сравни с добре написана С програма по параметър четимост. Тук естествено има и нещо друго съвсем субективно, до колко помниш какво си правил. Аз лично помня максимум седмица, след това као няма коментари ми е по лесно да го пренапиаш отколкото да разбера какво съм мислил като съм писал, може би други хора помнят какво са писали и им е много по лесно да си разчитат сорса и без коментари.
То въпросът малк се измени, но в крайна сметка не опира само до това с кой език да се почне, по скоро от къде, и според мен човек който е решил да се занимава с контролери трябва да почне от най простите неща, основи ана електротехниката, закон на Ом на кИрхов, след това принцип на работа на транзистор, кондензатор, индуктивнот, т.е. малко физика, малко математика, защото иначе е трудно, цифрова електроника, аналогова, и чак след това да тръгва да пише програми. Сега май начинаещите почват отзад напред, опитват се да пишат програми, без да занят кое как работи.
|
| Чет Юли 13, 2006 10:51 pm |
|
 |
|
milenjs
Ранг: Форумен бог
Регистриран на: Сря Мар 08, 2006 2:12 pm Мнения: 2017 Местоположение: Котел
|
Все си мисля че първо трябва да научиш азбуката, тогава да почнеш да пишеш романи. Обаче малко стават добри писатели! Май трябва да ти идва отвътре!!!
|
| Чет Юли 13, 2006 10:53 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30685 Местоположение: София
|
Е това за отвътре отдавна ми е на устата, ама все не ми се иска да го кажа да не се засене някой, тази работа не е за всеки, един има мислене подходящо за адвокат, друг за писател, трети за художник, а някои за инжинер, първо трябва да я има тръпката да разбереш зато едно нещо е така, а не просто да го приемаш че е така, в тая техника фактите са много важни, подробностите, не говоря само за електрониката, за механичните инжинери е подобно, макар там развитието да не е толквоа бурно. А за програмирането може при РС да няма голямо значение, но при контролер, подходящото мислене е решаващо.
|
| Чет Юли 13, 2006 10:56 pm |
|
 |
|
Реконструктор
Ранг: Форумен бог
Регистриран на: Съб Сеп 25, 2004 12:32 pm Мнения: 8382 Местоположение: София
|
Ами това вече е хардуер и програмиста много тая работа (би трябвало) не го ебе.  Ами хардуериста прави стабилен телефон, но с функционалност и дизайн на таймер за печка, програмиста го прави с мелодийки, теми, картинки и секви благини. Познай компанията-производител на телефони кой ще предпочете да й напише софта. Това е тема за дълъг и разгорещен флейм, но рискувайки да отнеса публичен линч, ще се въздържа от коментар.  Ми за кво спорим тогава бе, човек.  |  |  |  | ToHu написа: Система за оповестяване, има входове, в случая около 100, от другия край бутони, човека чисто и просто е набутал преместващи регистри кум един ПИК, вързал е кабелите, както може би се сещате десетки, а някои стотици метри директно към регистрите и пей сърце. Да не е било проблем да напише софта, да му сложи LCD и т.н. но липсата на опит определено му е била в повече. Това у-во което работи идеално на масата, в реални условия не иска. При всеки гръм по близо някой регистър си заминава. Освен това кабелите които минават в близост до силови трасета индуцират достатъчно смущение за да се получи лог.1, освен това нямаш никакъв мониторинг на проводниците и на бутоните. Е ... може ли това да е работеща система, за мене не. Всеки който имаше малко опит или поне беше почел щеше да съобрази възможноите проблеми, а не като тоя да буха софтуерни филтри които не могат да му решат проблема. |  |  |  |  |
Ами отново въпрос на хардуер. Аз тука пример за програмистка неграмотност в ембедед програмирането не виждам? 
|
| Пет Юли 14, 2006 3:33 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30685 Местоположение: София
|
от зад напред:
аз виждам, защото ти щеше да направиш същата реализация, може би с чипове на SPI, което е пълна грешка, в такива случаи или се прави интелигентно по протокол, или както е в случае по задание да позлва прост бутон с еправи с токова кръг който поддържа константен ток, и при задействие токът се мени, това е единствения разумен начин за конторл на линията, открива се късо, прекъсване натиснат бутон, като пуснеш ток 10-на мА смущенията са много малки.
по нататък, спореим защото го е праивл човек който не разбира от хардуер, без значение дали е хардуерист или не, написал е добър софтуер, но цялото у-во е нефункционално.
Относно функции и дизайн, изобщо не съм ужбеден че някой програмист е способен да направи добър потребителски продукт, виждал съм мнго програмистки творения, които функционират по начин понятен само на тях, един хардуерист е далеч по сапособен да направи функционално изделие отколкот софтуерис, но за тая работа си има хора, които са дизайнери на интерфейс и т.н. ..... м-у другото последните клиенти много се радват на дизайно който съм им напраивл на у-вото, точно от маркетингова гледна точка ... не бъркай хардуериста с руски дизайнер ....
А за PWM, естествено че трянбва да знае, как иначе ще си напише алгоритъма за контрол ? Как ще знае кога да намали и ли увеличи запълването .... или пък да спомена далекомера дето го мъча, я ми кажи как софтуерист без познания по математика и физика ще го направи ....
|
| Пет Юли 14, 2006 5:39 pm |
|
 |
|
nickich
Ранг: Почетен член
Регистриран на: Вто Ное 01, 2005 10:23 am Мнения: 704 Местоположение: Limerick, Ireland
|
_________________ "640 К са достатъчни на всеки за всичко." Бил Гейтс
|
| Пет Юли 14, 2006 5:44 pm |
|
 |
|
Bezmozachen
Ранг: Популярен
Регистриран на: Сря Апр 27, 2005 2:47 pm Мнения: 349 Местоположение: Varna
|
ТоНи, Реконструктуре, отклонихте се от темата. Въпроса е с какво да се започне да се учи програмиране.
И аз както много от вас, почнах с Бейсик и Правец 8C. Имаше една поредица от книги("Компютри за всички" или нещо от сорта) тогава, вече не им помня заглавията, та едната(май беше първата) се отнасяше точно за това. Беше много просто и последователно описани началните стъпки с прости примерчета. Големия проблем, според мен е самото начало. Това да се научиш да мислиш "програмистки". До колкото си спомням големия ми проблем тогава (бях в 5-ти клас) беше да разбера що е то променлива и как работи един прост цикъл от рода:
10 FOR I = 1 TO 100
20 S = S + I
30 NEXT I
Ей това на 20-ти ред тогава не можех да проумея. Когато го проумях, тогава вече започнах да уча наистина. Лошото е че не се намират такива книжки за съвременни компютри. В нета е пълно с книги от рода "Да научим C/C++/C#/Pascal/Java/Mava за 10/5/2 дена/със задна дата", но не и такива които да те научат да програмираш (защото горните са такива, че за да ги четеш, трябва да знаеш да програмираш). Изкустото на "Програмирането" е начин на мислене, а не познаване на език.
|
| Пет Юли 14, 2006 5:58 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30685 Местоположение: София
|
Да отклонихме се но малко или много е свързано, защото програмирането за контролери не е като това за РС, поне според преобладаващата част от тук присъстващите.
Относно че е начин на мислене, точно това е да, интересно колко от тук присъщващите са се чудили на израза от 20-ти ред, и колко са го измислили сами преди да го видят. В 4-ти клас започнах с лого, ходих и на олимпиада, задачата беше да се изчертае логото на ТНТМ, след това минах на бейсик, най-голямото ми постижение там беше един покер за правец 8Д, това беше най сложното  . След това за дълго време бях изоставил компютрите,занимавах се само с електроника, започнах да се занимавам с микроконтролери, и едва след това покрай тях отново чат пат съм понаписал по нещо за РС, но никога не съм претендирал че тия неща са написани както трябва, обикновено ги пиша все едно ги пиша на контролер. Та да за започването е едно, само че аз а и доста както някой вече каза са започнали паралелно доста отдавна, в 4-ти клас започнах и да ходя на кръжок в ОСО по електроника, и с електрониката си се занимавам от тогава.
Не съм сигурен баче че е подходящо за начинаеш да тръгне точно с програмиране за РС .. но ..... който има подходящото мислене, сигурно с каквото и да се хване бързо ще се оправи. Според мен С е доста подходящо освен това е универсално, поддързат го за всички платформи, докато с бейсик и паскал не е така. Но тоа при условие че човека е наясно с асемблера, много по лесно е първо да научиш азбуката и после да почнеш да четеш, отколкото да се опитваш да научиш азбуката като научаваш смисула на думите, така може и никога да не успееш да я научиш, въпреки че ще можеш да четеш някак.
|
| Пет Юли 14, 2006 7:10 pm |
|
 |
|
zaphod
Ранг: Форумен бог
Регистриран на: Нед Юли 24, 2005 10:28 am Мнения: 2658
|
според мене от контролери към РС се минава по-лесно. контролерите са с малки ресурси, и като минеш на РС ти е широко около врата, докато в обратния вариант често се препълват стекове, памет, програмите влачат, е такива неща.
от друга страна, доколкото съм наблюдавал миграторите МЦУ->РС, то тях ги тормози липсата на свобода - операционната система е господарят на РСто и често това дразни новобранците. другото което плаши МЦУ->РС мигриращите, е че не е ясно как точно бачка системата. при контролерите всичко е ясно до последния детайл, докато при РСто нещата надолу се губят в някаква мъгла.
|
| Пет Юли 14, 2006 7:52 pm |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 1 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|