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

XpucToBa

  • Напреднали
  • *****
  • Публикации: 18
    • Профил
Здравейте! Видях, че тука има теми със въпроси като моите и реших и аз да си пусна една тема за да ми помогнете малко. Прочетох ето тази тема: http://www.linux-bg.org/forum/index.php?topic=35348.0 и честно казано почти същите запитвания като моите. Та аз съм на 13 и искам да се занимавам с програмиране. Прочетох сигурно 100 теми по този въпрос, но за съжеление ме объркаха тотално. Едни казват започни направо с C++ други казват, че са трудни по-добре да започнем с Pascal и т.н.. Аз реших първо да започна с C защото видях доста отзива като например: " Ще е хубаво да започнеш с C, а след това с C++ защото ако започнеш с C++ ще ти е доста трудно.. " и т.н.. Мислех да кандидатсвам след 7ми клас в МГ ,, Баба Тонка " със Математика и Информатика.. Та искам да ми кажете това да започна с C и след това да премина към C++ добро решение ли е? И може да ми препоръчате някаква книга за C като за начинаещ, но желателно е да не е онлайн.. Прегледах и това: http://forums.bgdev.org/index.php?showtopic=591, но книгите са толкова много, че не знам коя да си поръчам.. Ако темата ми е в грешен раздел, моля да ме извините.  :)
Активен

v13

  • Гост
Re: Как да започна с програмирането?
« Отговор #1 -: Sep 15, 2012, 14:14 »
Да започнеш с C и после да минеш на C++ си е чиста загуба на време. Отделно у някой свикнали да пишат първоначално на C, писането им на код на C++ е невероятен сбиртак от двата.
Активен

borovaka

  • Напреднали
  • *****
  • Публикации: 1331
  • Distribution: Каквото дойде
  • Window Manager: Gnome / KDE
    • Профил
Re: Как да започна с програмирането?
« Отговор #2 -: Sep 15, 2012, 14:49 »
Първо добре дошла във форума. По мое мнение е най-добре да започнеш точно със C и C++, никакъв Паскал. Повечето езици които се използват масово в момента са точно C style, и ще можеш да се ориентираш по-лесно. Другият вариант който мога да ти препоръчам е java, макар, че там трябва да почетеш за ООП преди да започнеш. Има и други варианти примерно PHP/JavaScript, но мисля, че е по-добре отначало да се започне с някой типизиран език, за да придобиеш обща представа за нещата.
Успех ти желая.

//offtopic @v13 какво точно имаш в предвид ... Цялата дефиниция на C влиза в C++ и не е нищо лошо да ползваш C header-ите когато пишеш C++. Ти искаш да я хвърлиш директно на обектния модел на CPP-то ли?
Активен

Та извода е прост: "Колкото по-големи ла*ната - толкова по-малка щетата! ... моралната де, не материалната"

Oxy

  • Напреднали
  • *****
  • Публикации: 253
  • Distribution: Fedora / Gentoo / Debian
  • Window Manager: KDE (4.2/ 3.5)
    • Профил
    • WWW
Re: Как да започна с програмирането?
« Отговор #3 -: Sep 15, 2012, 15:48 »
Аз като ти чета така темата, препоръчвам да се захванеш с нещо като асемблер примерно... Има едно нещо MiMa се казва, ама още няма симулатор сякаш може да пишеш за него(стои за минмале машине)... ако искаш пък да си моден дръпни МИПС симулатора Спим и почвай... може да пробваш и примерно някви други неща като джава байт код такива неща... Така се става истински програмист... не ги слушай тия джаваджии и Ц++съри.. ако държиш за някакви езици от високо ниво може да пробваш Ada... чувам била ДОД и много модна :) Друго също дето било модно било Пролог. Ако много държиш да си Уеп-програмист може да почнеш да учиш джава и Джейбос... и там някво ЕсКуЕл щяло да требе да учиш.. общо взето вземи има бол менюали, особено за асембли(мога да ти дам линкове според зависи какви езици говориш)

borovaka

  • Напреднали
  • *****
  • Публикации: 1331
  • Distribution: Каквото дойде
  • Window Manager: Gnome / KDE
    • Профил
Re: Как да започна с програмирането?
« Отговор #4 -: Sep 15, 2012, 16:04 »
//off
@Oxy само не можах да разбера, защо се ебав*ш ... Като си на 13 е напълно нормално да питаш нещо, че и да не си де. Ако има мерак да се занимава да почва, пък ако ентусиазма умре има време да се преориентира.
Активен

Та извода е прост: "Колкото по-големи ла*ната - толкова по-малка щетата! ... моралната де, не материалната"

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Re: Как да започна с програмирането?
« Отговор #5 -: Sep 15, 2012, 16:28 »
Работата ми през годините досега ме е сблъсквала с доста езици и опитът от това ме е довел до заключението, че има 3 основни стъпки, по които трябва да мине човек, за да се научи да програмира добре на даден език:
Стъпка 1 - Научаване на основната логика за програмиране. Тук имаме 2 пътя, по които може да се поеме - процедурно или логическо програмиране. Езиците, които си изброила (поправи ме, ако бъркам рода), се използват за процедурно програмиране, такова програмиране е използвано в масово разпространените в момента операционни системи, програми и сайтове. При тази стъпка езикът, с който изпълняваш стъпката, не е от значение (можеш да си избереш който и да е, но ако решиш да се занимаваш с процедурно програмиране, избери език за такова програмиране), езикът ще ти служи само като инструмент за разучаване какво са и за какво се използват променливи, константи, цикли, условни оператори, функции и т.н., елементите, които изграждат процедурно написания код. Всички процедурни езици ги използват и във всички процедурни езици служат за едни и същи неща, като в различните езици имат само някои разлики в синтаксиса на изписване, но точният синтаксис не е част от тази стъпка. В тази стъпка трябва да научиш логиката, по която се изгражда процедурният код, а тази логика е една и съща във всички процедурни езици. Като завършек на тази стъпка можеш да научиш разликата между двете основни разделения на процедурното програмиране - функционалното и обектно-ориентираното програмиране. Това са фундаментални (основни) логики, които са едни и същи във всички процедурни езици, само дето не всички езици поддържат и двете логики. Не се ограничавай в езика, учи самата логика на писане. Точният начин на изписване не е обект на тази стъпка. Бих ти препоръчал първо да се занимаеш с функционалното програмиране, а след това с обектно-ориентираното, тъй като функционалното програмиране се съдържа в обектно-ориентираното, но обектно-ориентираното не се съдържа във функционалното. Т.е., научавайки функционалното програмиране ще си улесниш след това научаването на обектно-ориентираното програмиране, вместо да ги учиш и двете наведнъж, ако започнеш с обектно-ориентирано. Научиш ли добре логиките в тази стъпка 1, получаваш летящ старт за научаването на който и да е друг език;
Стъпка 2 - Научаване синтаксиса на основните елементи (задаване на променливи, if-else, while, for...), които споменахме в стъпка 1. Тук вече можеш да си избереш език, тъй като от тази стъпка започваш усъвършенстването си в даден език, но можеш да гледаш и няколко езика едновременно, за да си избереш езика, синтаксисът на който ще ти хареса най-много. След като от стъпка 1 знаеш за какво се използват тези основни елементи, лесно ще научиш синтаксиса им за който и да е език, а и да не го знаеш за даден език, бързо можеш да го видиш с търсене в Интернет (например "if c++", "while perl", "variable php" и т.н.). Тази стъпка ще ти даде възможност сама да си избереш език/езици, с които да тренираш изписването на начални функционалности. С тази стъпка започваш реално да програмираш, като доброто ѝ научаване ще ти даде летящ старт след това да се специализираш в който си поискаш език;
Стъпка 3 - Задълбочаване в синтаксиса. Това е стъпката, в която ставаш специалист по програмиране на даден език. Тук вече задължително си избираш език, в които искаш да специализираш. Аз съм на мнение, че всеки език е с целите си. Не мисля, че е за момента съществува език, на който е добре да се пише всичко, от малки скриптове до големи програми и операционни системи. За да си избереш език, в който искаш да специализираш, първо трябва да си избереш за какво искаш да го ползваш. Изборът е различен в зависимост от насочеността на кода - Интернет или приложен софтуер, едноплатформеност или мултиплатформеност, високо или ниско ниво в комуникацията с операционната система и/или хардуера... общо взето, първо трябва да си определиш функционалността на това, което ще пишеш, а след това езика, на който ще го пишеш. Естествено, изборът не те задължава, така че в някой момент съвсем спокойно може да решиш да започнеш стъпка 3 отначало с друг език. След като в стъпка 2 си се научила на основен синтаксис в езиците и как да търсиш синтаксис в документацията, продължаваш с писането на все по-сложен код, като четеш за нови функции в документацията на дадения език.

Накратко. В стъпка 1 езикът е без значение и хващането на даден език е колкото за някакво практически опити на научената логика. В стъпка 2 дори е препоръчително да разгледаш основния синтаксис на няколко езика, за да си положиш добра основа за избор на език за конкретни цели, когато се наложи. В стъпка 3 идват конкретните цели, където първо си избираш в писането на какви приложения искаш да специализираш, след което си избираш подходящ език за тях, в който да се усъвършенстваш.
Та... ако сега започваш стъпка 1, хвани който и да е език. Ако сега започваш стъпка 2, разцъкай всички езици, които ти се сторят интересни (ето ти един списък тук). Ако сега започваш стъпка 3, първо си изясни какво смяташ да програмираш и след това питай себе си и нас за език ;)
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

The_Ghosts

  • Участници
  • ***
  • Публикации: 4
    • Профил
Re: Как да започна с програмирането?
« Отговор #6 -: Sep 15, 2012, 17:10 »
Вие нещо май се гаврите с момчето ...... За 13 годищен един скриптов език като PHP/Perl/Python/Ruby ще му е предостатъчен да се запознае с общите идеи на програмирането ( от горе изброените ти препоръчвам Perl или Python ). Макар че нищо не му пречи да почне с нещо от рода на Java или C* , но си зависи от багажа му.
Активен

XpucToBa

  • Напреднали
  • *****
  • Публикации: 18
    • Профил
Re: Как да започна с програмирането?
« Отговор #7 -: Sep 15, 2012, 17:23 »
Благодаря за бързите отговори.  :) @The_Ghosts момиче съм. Исках да започна със C, защото предполагам, че ще ми е по лесно да изучавам по-нататък и C++. Може ли мнение за тези книги "Програмният език C" и "Алгоритми на С" ? Добри ли са за начинаещи като мен? :)
« Последна редакция: Sep 15, 2012, 17:31 от XpucToBa »
Активен

jet

  • Напреднали
  • *****
  • Публикации: 3472
  • Distribution: debian
  • Window Manager: kde
    • Профил
Re: Как да започна с програмирането?
« Отговор #8 -: Sep 15, 2012, 17:36 »
Както neter  е споменал - универсален език няма. Трябва да решиш какъв тип програми искаш да пишеш и по това да избереш езика. Ако пишеш драйвери, кърнъл модули или десктоп приложения - php няма да ти свърши никаква работа колкото и добре да го научиш. Ако пишеш уеб приложения- С/С++ няма да е най-удачния избор.
Активен

..⢀⣴⠾⠻⢶⣦⠀
  ⣾⠁⢠⠒⠀⣿⡁
  ⢿⡄⠘⠷⠚⠋
  ⠈⠳⣄⠀⠀⠀⠀  Debian, the universal operating system.

XpucToBa

  • Напреднали
  • *****
  • Публикации: 18
    • Профил
Re: Как да започна с програмирането?
« Отговор #9 -: Sep 15, 2012, 17:40 »
@jet насочила съм се към десктоп приложения именно затова избрах C/C++ ;)
« Последна редакция: Sep 15, 2012, 17:42 от XpucToBa »
Активен

kifavi8024

  • Новаци
  • *
  • Публикации: 0
    • Профил
Re: Как да започна с програмирането?
« Отговор #10 -: Sep 15, 2012, 17:49 »
Вие нещо май се гаврите с момчето ...... За 13 годищен един скриптов език като PHP/Perl/Python/Ruby ще му е предостатъчен да се запознае с общите идеи на програмирането ( от горе изброените ти препоръчвам Perl или Python ). Макар че нищо не му пречи да почне с нещо от рода на Java или C* , но си зависи от багажа му.

А ти май не четеш. Тя е момиче, а не момче...

Относно темата: И според мен е добра идея да започнеш с нещо по-просто. Под по-просто имам предвид, че синтаксиса и самата структура на езика е по-лесна за възприемане (по-четима на пръв поглед). Т.е. за да ти е по-лесно, трябва да започнеш с по-лесен език за учене.

За 13 годишна не смятам, че С е най-лесният език или най-добрият избор. Езика наистина е достатъчно добър и си заслужава да го изучаваш, но като почнат да четеш думички като препроцесор, референция, указател, адрес на клетка в паметта и ще почнеш да си скубеш косите :D

И то не защото е не е обяснено достатъчно добре, а защото го няма достатъчно добре обяснено на български. Има една много добра книга за начинаещи C програмисти - но за жалост е написана на английски. Колкото и да си умна, според мен на 13 години още не сме научили родният си език, какво остава да се учим на чужд език. Не казвам че е невъзможно, но все пак...
Всичко зависи от това, колко си предразположена към логическо мислене. Ако схващаш бързо и не се плашиш от сложните неща, няма проблем да започнеш от езика С. Но ако това не е така, по-добре започни от някой по-лесен език.

Ако въпреки мнението ми, искаш да започнеш с изучаване на С, аз ти предлагам да започнеш с най-добрата книга за начинаеши: Head First C


Аз бих ти предложил следното нещо. От следните примери, които ще видиш по-надолу. Кой от тях ти се вижда най-разбираем? Кой от тях ти е най-интересен? - т.е. не го разбираш напълно, но ти е интересно да разбереш какво прави точно това, което ти е непонятно:

Езика С:
Код
GeSHi (C):
  1. #include <stdio.h>
  2.  
  3. int main(void)
  4. {
  5.    puts("Hello world!");
  6. }

Езика С++:
Код
GeSHi (C++):
  1. #include <iostream>
  2.  
  3. int main()
  4. {
  5.    std::cout << "Hello, World!\n";
  6. }

Езика C#:
Код
GeSHi (C#):
  1. class ExampleClass
  2. {
  3.    static void Main()
  4.    {
  5.        System.Console.WriteLine("Hello, world!");
  6.    }
  7. }

Езика Java:
Код
GeSHi (Java):
  1. public class HelloWorld {
  2.   public static void main() {
  3.       System.out.println("Hello world!");
  4.   }
  5. }

Езика Python 3:
Код
GeSHi (Python):
  1. print("Hello World")

След като отговориш на тези два въпроса, ще е напълно ясно към кой език ще е най-добре да се насочиш. Просто си помисли малко по-добре и отговори на тези два въпроса.

Има и един последен въпрос, който също е много важен:
Ти като програмист какви програми искаш да правиш, какви действия искаш да извършват програмите ти. Т.е. да са примерно програми като браузъра ти, като офиса ти, като skype-a, или да са като сайтове в които влизаш, или като операционната система която ползваш в момента?

П.П: Щом си се насочила към десктоп приложения...
Това говори достатъчно.
Премахвам ненужните езици от горния списък.
« Последна редакция: Sep 15, 2012, 17:53 от !ntel »
Активен

XpucToBa

  • Напреднали
  • *****
  • Публикации: 18
    • Профил
Re: Как да започна с програмирането?
« Отговор #11 -: Sep 15, 2012, 18:08 »
!ntel не се плаша от сложни неща и схващам нещата наистина бързо. Обичам предизвикателствата и мисля, че ще се справя със C. Имам време и желание за това и наистина искам да се занимавам с програмиране. За едно "Здравей Свят!" гледам, че кодът на Python 3 е най-кратък, но не ми е най-интересен вярно кодът на C има малко повече за писане, но ми е доста по-интересно. Ами програмите които искам да правя са като браузъра, офис програми, програми като скайп, но НЕ и сайтове :) Общо взето бих правила всякакви програми, но не и сайтове. Преди година 2-3 месеца само се занимавах със HTML, не научих всичко, но знам някои основни кодове. Книгата която си ми дал е хубава, но за съжеление не съм научила целия английски език. Затова исках някоя българска книжка.
« Последна редакция: Sep 15, 2012, 18:19 от XpucToBa »
Активен

kifavi8024

  • Новаци
  • *
  • Публикации: 0
    • Профил
Re: Как да започна с програмирането?
« Отговор #12 -: Sep 15, 2012, 18:37 »
Ами за съжаление на български надали има нещо свястно написано - това е жалката истина...
Тук начинаещите наистина са доста ущетени.

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

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

В тази книга има още един много важен подход - примери с въпроси и отговори. Така ти показват как е правилно да мислиш. Задаваш си даден въпрос и му отговаряш. А не просто да ти напишат 1000 страници текст и нито помен от въпроси.

Напредналите може и да са свикнали да си задават въпроси, но тук говорим за начинаещи. И книгата цели да те научи, точно на това - да мислш без значение от това в каква ситуация си.
Ако се научиш да мислиш правилно, няма да има език, който да е труден за теб - защо?
Защото този принцип на въпроси и отговори е приложим(универсален) за всички езици.
Този принцип е като краката на една маса - масата няма как да съществува без крака...

Синтаксиса(начина/правилата за писане в езика) няма да са важни ако свикнеш да мислиш по този начин - логическият начин.
И точно това е разликата между добрите програмисти и тези които не са толкова добри (посредствени).

Всичкото това ти го казвам, защото и аз като по-малък съм минал през това. И се надявам, че като ти кажа това, след време ще се увериш, че съм бил прав. Тъпо е че няма добро четиво на български, но това не трябва да те спира, а напротив - трябва да те мотивира да научиш английски. :)

Достатъчно си млада, една или две години учене на английски няма да са ти проблем, а след това ще може да се посветиш на програмирането.

Относно книгите - не съм на 100% сигурен, че няма добра книга за начинаещи по C, но аз не съм се натъквал на такава вече 5 години, така че ако някой има информация за подобна книга, да казва веднага. Ще ми е интересно дали е превод или родно творение :)
« Последна редакция: Sep 15, 2012, 18:42 от !ntel »
Активен

bop_bop_mara

  • Напреднали
  • *****
  • Публикации: 2433
  • Distribution: Debian Testing
  • Window Manager: LXDE
  • Cute and cuddly
    • Профил
Re: Как да започна с програмирането?
« Отговор #13 -: Sep 15, 2012, 19:41 »
Може ли мнение за тези книги "Програмният език C"
Тази си е задължително присъствие в библиотеката, все пак е писана от създателите на езика.
За алгоритмичната не знам, аз бих казала „Програмиране=++Алгоритми“ на Преслав Наков. Там има и по-леки неща (да ти развиват мисленето), и по-сериозни алгоритми (ако са ти интересни).
Активен

kifavi8024

  • Новаци
  • *
  • Публикации: 0
    • Профил
Re: Как да започна с програмирането?
« Отговор #14 -: Sep 15, 2012, 19:44 »
Програмният език C  - това е книга за напреднали. Обясненията са много сбити и точни и се предполага, че тази книга иска да те научи на добрите практики и не е книга тип от А до Я. :)
Активен