Автор Тема: Как да започна с програмирането?  (Прочетена 76595 пъти)

rwk

  • Напреднали
  • *****
  • Публикации: 29
    • Профил
Re: Как да започна с програмирането?
« Отговор #135 -: Dec 05, 2014, 13:43 »
Един въпрос по темата. До момента, от дискусията става ясно, че изборът на първоначален език за програмиране на някой, който желае да се занимава професионално с информационни технологии, зависи до голяма степен от това, за какви цели и в какви сфери ще се прилагат програмните продукти, създадени от бъдещият програмист, най-общо казано. Да предположим, че начинаещият би желал, след време, ( след края на обучението си ) да създава софтуеър, управляващ комуникационни съоръжения. Такива комуникационни съоръжения, които осъществяват връзките между Земята и изкуствени спътници, изпратени в дълбокия космос, например. Или  тяхната поддръжка и обслужване. Какъв би бил подходящият избор на програмен език за начало на обучението му?
Активен

runtime

  • Напреднали
  • *****
  • Публикации: 807
  • Distribution: Ubuntu 14.04
  • Window Manager: Unity
  • LZ1DOT
    • Профил
    • WWW
Re: Как да започна с програмирането?
« Отговор #136 -: Dec 05, 2014, 14:46 »
Значи бича на новото поколение програмисти се корени в това, че те започват да пишат без да са на ясно с някои основни предмети, като "Изследване на операциите", "Теория на алгоритмите", "Компютърни архитектури", ДМ, ООП и т.н. ще пропусна да изреждам всички. Идеята е, че ако не осъзнаеш как да съставиш алгоритъма на една задача, било то и програмна няма значение на какво ще бъде изпълнена тя, то винаги крайния резултат ще е незадоволителен. Или по просто казано, ако нямаш мозък между ушите, защо ти е да имаш уста, която да говори. Да тя ще говори, но ще дрънка само глупости. За това би било добре да се запознаеш малко с теорията и тогава да започваш каквото и да било. Езика за програмиране не се избира само спрямо сферата на приложение на крайния продукт.

И в повечето случаи, при такива мащаби се работи с подходи, DFD, дигами на сценарии, сътрудничество, моделиране на процеси и т.н. и т.н. за това е добре да хвърлиш поглед и на Софтуерно инженерство.

П.С. Естествено не трябва да се стига до познания, като доказване на теоремата на Ферма ама бива малко от малко да се мине през тази материя.
« Последна редакция: Dec 05, 2014, 14:53 от runtime »
Активен

PaperNick

  • Напреднали
  • *****
  • Публикации: 295
  • Window Manager: Xfce
    • Профил
Re: Как да започна с програмирането?
« Отговор #137 -: Dec 05, 2014, 16:06 »
Един въпрос по темата.
И аз едно време си мислех, че просто трябва да науча някакъв език според това с което смятам да се занимавам. Но както runtime каза, трябва да се започне малко по-отдалеч. Това лято изкарах първия курс от специализацията Fundamentals of Computing от Rice University в Coursera. Лекторите са супер печени и материала е поднесен по много свеж начин.

Ето ги и трите курса от специализацията:

Мисля, че това до голяма степен покрива основите, които всеки трябва да знае.
В края на краищата, синтаксът се учи лесно, но мисленето се изгражда малко по-трудно.

Между другото, в тези курсове математика не липсва ;)

Edit:
Да вметна, че курсовете са напълно безплатни (освен ако не искаш потвърден сертификат).
Просто отиваш на страницата на курса, записваш някоя дата и почваш.
« Последна редакция: Dec 05, 2014, 16:12 от PaperNick »
Активен

Practice

runtime

  • Напреднали
  • *****
  • Публикации: 807
  • Distribution: Ubuntu 14.04
  • Window Manager: Unity
  • LZ1DOT
    • Профил
    • WWW
Re: Как да започна с програмирането?
« Отговор #138 -: Dec 05, 2014, 16:20 »
Е тя математиката си е неизменна част  [_]3 Въпреки, че много "бъдещи" програмисти смятат, че тя е излишна, аз няма как да подкрепям такова твърдение. Ние имахме Висша 1,2,3, дискретна, изкуствен интелект, изследване на операциите, числени методи, вероятности и статистика и вече даже не си спомням за другите, но нямаше семестър в който да нямаше нещо свързано с математическите науки :) И да си призная особено сега като почнах да се занимавам с embedded устройства взеха да се отблагодаряват знанията... Особено, като в един проект ми се наложи да ползвам неврони мрежи (в частност Encog фреймуорка).


P.S. Чудно ми е момичето след близо 3 години дали все още иска да е програмист :-D
« Последна редакция: Dec 05, 2014, 16:42 от runtime »
Активен

NorthBridge

  • Напреднали
  • *****
  • Публикации: 177
  • Distribution: Slackware-current
  • Window Manager: Enlightenment E17
  • Mad Tinkerer
    • Профил
Re: Как да започна с програмирането?
« Отговор #139 -: Dec 05, 2014, 17:40 »
Е тя математиката си е неизменна част  [_]3 Въпреки, че много "бъдещи" програмисти смятат, че тя е излишна, аз няма как да подкрепям такова твърдение. Ние имахме Висша 1,2,3, дискретна, изкуствен интелект, изследване на операциите, числени методи, вероятности и статистика

Аз пък имам малко по-различно виждане. Нищо лошо няма в теорията и малко по-абстрактните принципи, но само с четене не става. С чиста съвест човек който си няма представа от програмиране може да изяде половин библиотечка за ООП, алгоритми, шаблони, архитектура, добри и лоши практики, сигурност и т.н., но това няма да му помогне без да си изцапа ръцете и да напише нещо. Същото важи с пълна сила и в обратна посока - може да изпишеш планини от код, без да знаеш грам теория (или почти), но резултатът ще е близко до плачевен. На такива хора им викат code monkey-та.

Та в крайна сметка какъв е най-добрия вариант? По малко и от двете. Баланс между четене на теория, книги и т.н. и писане на проекти, библиотеки и собствени експерименти. Впоследствие като ти потрябва нещо друго - хващаш съответната книжка, прочиташ я и продължаваш с практиката. Нищо лошо няма в това човек да знае какво е матрица, вектор и интеграл поне за обща култура, но 3 висши математики е прекалено за един средностатистически програмист, освен ако няма да ги ползва всеки ден.

Поздрави и бира  [_]3
Активен

I did a 'zcat vmlinuz > /dev/audio' and I think I heard God...

rwk

  • Напреднали
  • *****
  • Публикации: 29
    • Профил
Re: Как да започна с програмирането?
« Отговор #140 -: Jan 15, 2015, 07:34 »
Още един въпрос: какво означава, ако сайт от типа https, вместо символ зелено катинарче пред него, има жълто триъгълниче? 
Активен

ddantgwyn

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 1262
    • Профил
Re: Как да започна с програмирането?
« Отговор #141 -: Jan 15, 2015, 08:18 »
Още един въпрос: какво означава, ако сайт от типа https, вместо символ зелено катинарче пред него, има жълто триъгълниче?

Че трябва да се отнасяш с повишено внимание към този сайт ::)

Най-често се получава, когато сертификата на сайта е самогенериран и не е в списъците на CA, използвани от браузърите за удостоверяване автентичността на сертификата.
Активен

the lamer's team honourable member

rwk

  • Напреднали
  • *****
  • Публикации: 29
    • Профил
Re: Как да започна с програмирането?
« Отговор #142 -: Jan 15, 2015, 08:52 »
И какво трябва да се направи за да се върне отново зеленото катинарче?
Активен

ddantgwyn

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 1262
    • Профил
Re: Как да започна с програмирането?
« Отговор #143 -: Jan 15, 2015, 18:22 »
И какво трябва да се направи за да се върне отново зеленото катинарче?

Ти лично -- нищо, ако причината за това е тази, която съм споменал.

Освен може би да добавиш Security Exceptions, когато браузърът те попита какво да правиш. Но не съмубеден, че това ще промени нещо, но може да опиташ и да кажеш какъв е резултата.
Активен

the lamer's team honourable member

4096bits

  • Напреднали
  • *****
  • Публикации: 6749
    • Профил
Re: Как да започна с програмирането?
« Отговор #144 -: Jan 15, 2015, 19:18 »
Не мисля, че на 13 години С ще е сложен за научаване. Всички езици за програмиране са просто един синстаксис. Алгоритмите са друго нещо. Те са програмирането,
И смятам, че точно 13 години са възраст, когато още човешкия мозък не е обременен от модели на мислене и може да учи и научава лесно, защото е на сто процента свободен от това. Учил съм С малко по-голям и ми беше супер лесно. Доста по-късно се хванах с други езици, но се бях научил да мисля на С. Синтаксиса на другите ме объркваше.
Нека почне, пък тя ще си прецени, сложно ли ѝ е все още или се справя. Не подценявайте днешните деца. Нямат нищо общо с нас. Вероятно е по-умна от всички ни.
Активен

As they say in Mexico, "Dasvidaniya!" Down there, that's two vidaniyas.

daniel_vulchev

  • Напреднали
  • *****
  • Публикации: 177
  • Distribution: NetBSD, Slackware, Debian
  • Window Manager: Console/Gnome
    • Профил
    • WWW
Re: Как да започна с програмирането?
« Отговор #145 -: Jan 15, 2015, 22:22 »
Не се ограничавай само със С и С плюс плюс ползват се навсякъде  , ако наистина мислиш като пораснеш да продължиш с програмиране чети и литератури свързани с проектиране на програми , операционни системи  как работят  стари езици също не е лошо да разгледаш. По важно е да си развиеш мисленето отколкото да запомниш на изуст всички  екстри на езика за програмиране. Дали програмираш на паскал джава или с плюс плюс никакво значение няма като не знаеш как работи останалата част  от компютърния свят.      започни с един няма значение с кой на всички примера е с hello word и въобще първите десет примера са едни и същи :D в последствие който ти допада наблегни на него . Успех!
Активен

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Re: Как да започна с програмирането?
« Отговор #146 -: Jan 15, 2015, 23:44 »
Какви алгоритми, какво математическо мислене, не мога да ги разбера тия твърдения, ужасно е скучно и хората, които прекалено много ми дълбаят такива разкази органично не мога да ги понасям. Винаги ми е било ужасно досадно това, още от ученик като ходих на олимпиади. Да хубаво, има много елегантни и хитри решения на разни проблеми, обаче да пукна ако някога се прехласна толкова че което и от това да ми стане интересно без да е свързано с някакъв конкретен проблем, който трябва да се решава, самоцелно набиване на глупости в главата. Има две неща, които не мога да понасям и считам че са формулирани и религиозно следвани от пълни чекиджии - complexity theory нещата и малоумните design patterns. Да, в определени случаи те може и да са много релевантни, обаче първите са абсолютно ирелевантни за програмен код който се изпълнява за милисекунди върху малък dataset и рядко и ми е през оная работа колко елегантен O(N) алгоритъм ги решавал по-добре и това става в 99% от случаите в днешния софтуер. Design pattern-ите от друга страна превръщат хората в малоумни зомбита-сектанти, които не мислят, а повтарят и тази религия е наложена най-вече от корпоративни тъпаци, които се интересуват повече от bus factor-а, отколкото нещата им да си вършат работата като хората.

Това казано, важното е да можеш да си представиш проблема и решението му ясно и в този ред на мисли няма нищо лошо да се разтърсиш за оптимално решение на (част от) него щом се налага, тук пак се намесват чекиджиите, които ти обясняват глупости, в интерес на истината това мислене е от 70-те години, когато не е имало интернет, съответно не е имало google и не е имало stackoverflow. Това само по себе си не е някакво свръх-велико умение.

И между другото - да - C е много хубав език като за въведение в програмирането, напротив на това което разни хора казват.

Апропо първият елементарен пример с алгоритмични хора, който отидох и видях в списъка с последните мнения в bgdev:

http://forums.bgdev.org/index.php?showtopic=45453&st=0

Мнението на тоя пич Lachezar, рекурсии, буфери, болни мозъци. Два вложени цикъла, никакви рекурсии и буфери, никакво делене, никакви операции с остатък и съвсем натурално задачата се решава, при това ще работи порядъци по-бързо, защото алгоритмичните хора нямат грам идея как им работи железарията. Трагично направо, но това е положението с хората загубени в абстракциите и логиката.
« Последна редакция: Jan 16, 2015, 00:21 от gat3way »
Активен

"Knowledge is power" - France is Bacon

remotexx

  • Напреднали
  • *****
  • Публикации: 3646
    • Профил
Re: Как да започна с програмирането?
« Отговор #147 -: Jan 16, 2015, 17:58 »
@gat3way Само не разбрах защо с 2 цикъла, като може и с един?!
А дали ще е с делене или побитово иместване това да подробности на реализацията...
Активен

daniel_vulchev

  • Напреднали
  • *****
  • Публикации: 177
  • Distribution: NetBSD, Slackware, Debian
  • Window Manager: Console/Gnome
    • Профил
    • WWW
Re: Как да започна с програмирането?
« Отговор #148 -: Jan 16, 2015, 20:21 »
Абе момичето ви пита за съвет много сте се отплеснали по темата ! За мен лично най-добрия вариант като е на 13 да разгледа езиците за програмиране да прочете по лесна литература как работят въобще компютрите и какво се случва вътре в машината. Програмирането в последствие може да си го развие в определени езици . Математиката развива мисленето няма да пише никъде редове на фурие и тем подобни. Реално за да ползва и математиката в програмирането ако се развие в бъдеще ще е след 20 години. По скоро на начинаещ програмист му трябват доста познания свързани с компютърния свят.  Всичко останало от рода на математики и разни тактики за създаване на проекти само ще го усъвършенстват. Има хора които смятат интеграли, матрици  , детерминанти , редове на фурие на ум но това не ги прави програмисти. Като цяло за програмирането трябва яко логика , а като седнеш да пишеш дали на жава , с плюс , паскал , делфи , асемблери и т.н. отваряш  справочниците и си четеш какво ти трябва и какво да пишеш. Програма за две плюс две равно на три се учат за да се запознаеш с езика и ако ти се отдава може и да направиш нещо на него ! [_]3
Активен

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Re: Как да започна с програмирането?
« Отговор #149 -: Jan 16, 2015, 22:44 »
Защото с два цикъла пишеш няколко реда код по-малко, а всеки нормален оптимизиращ компилатор ще генерира същият изход.

Това освен ако разбира се не проявиш глупостта да направиш нещо от сорта на if ((bit>>counter)&1) printf("1"); else printf("0"); или някаква подобна дивотия, тогава компилаторът лесно може да откаже да unroll-не цикъла.

Активен

"Knowledge is power" - France is Bacon