Автор Тема: Език за начинаещи  (Прочетена 10303 пъти)

v_badev

  • Напреднали
  • *****
  • Публикации: 1355
    • Профил
Re: Език за начинаещи
« Отговор #15 -: Jan 15, 2010, 14:17 »
Някой от препоръчалите C пред C++ може ли да ми обясни защо въобще е необходимо да се занимаваш с ръчно управление на паметта в наше време. Защо трябва да се чудиш сега трябва ли да викам free за този char* или не. И когато ти потрябва произволен контейнер (списък, хеш таблица, стек и т.н.) да си го пишеш сам, вместо да ползваш готовите. В крайна сметка почти всеки език ще ти свърши работа за начало, но според мен писането на C е прекалено тегаво за начинаещ.

Аз все пак бих препоръчал python. Лесно се пише на него и има готови модули за всичко.
Активен

bop_bop_mara

  • Напреднали
  • *****
  • Публикации: 2433
  • Distribution: Debian Testing
  • Window Manager: LXDE
  • Cute and cuddly
    • Профил
Re: Език за начинаещи
« Отговор #16 -: Jan 15, 2010, 14:33 »
Фокусът не е да знаеш как се управлява "ръчно" паметта, а как се управлява и какво е това нещо памет. А C++ си има вградени структури от данни.
Не ме разбирай погрешно, аз обожавам Python, но виждам как е на практика - който е започнал със C/C++ после му се удават много по-лесно нещата.
Пък и ако Линус Торвалдс през 1991 г. се беше заел с Python вместо със системно програмиране на C, май нямаше да сме тук сега ;)

ПС. Асистентът ни по Логическо пък поддържа тезата, че човек трябва да започне да програмира с Prolog... Някой тествал ли го е това?
« Последна редакция: Jan 15, 2010, 14:35 от bop_bop_mara »
Активен

tyuio

  • Гост
Re: Език за начинаещи
« Отговор #17 -: Jan 15, 2010, 14:34 »
Някой от препоръчалите C пред C++ може ли да ми обясни защо въобще е необходимо да се занимаваш с ръчно управление на паметта в наше време. Защо трябва да се чудиш сега трябва ли да викам free за този char* или не. И когато ти потрябва произволен контейнер (списък, хеш таблица, стек и т.н.) да си го пишеш сам, вместо да ползваш готовите. В крайна сметка почти всеки език ще ти свърши работа за начало, но според мен писането на C е прекалено тегаво за начинаещ.

Аз все пак бих препоръчал python. Лесно се пише на него и има готови модули за всичко.
Еми щом питаш значи повръхностно програмираш.
Какво значи в наше време да не би драйверите да са почнали да се пишат сами щото аз незнам. Никакъв програмист няма да си ако не знаеш как мисли компа а това става баш най добре със С. Я погледни статистиката на кое място е езика все още по използваемост а!
Второ, повечето модерни езици са С-подобни така че къде е довода да не се изучава или по точно какво против него имаш? Идеята идва от него като синтаксис и всички останали които са му подобни му подражават и изменят според нуждите си. Що езика "другия" език се казва С++ а не асемблер++ а?
Активен

v_badev

  • Напреднали
  • *****
  • Публикации: 1355
    • Профил
Re: Език за начинаещи
« Отговор #18 -: Jan 15, 2010, 15:52 »
който е започнал със C/C++ после му се удават много по-лесно нещата.
Е тук е първата разлика между гледните ни точки :) За мен C и C++ са различни езици. В C++ освен че можеш да пишеш обектно ориентиран код имаш прихващане на грешки, стандартна библиотека със стрингове, контейнери и т.н., в C нямаш нищо подобно. Като пишеш на C++ се занимаваш с управление на паметта само когато поискаш, докато в C се налага да го правиш постоянно.

Пък и ако Линус Торвалдс през 1991 г. се беше заел с Python вместо със системно програмиране на C, май нямаше да сме тук сега ;)
През 1991 нито C++ нито Python са ставали за сериозна употреба.

ПС. Асистентът ни по Логическо пък поддържа тезата, че човек трябва да започне да програмира с Prolog... Някой тествал ли го е това?
Аз съм писал малко на пролог. Ужасно е бавен и почти няма готови библиотеки за него, тоест не може да напишеш реална програма.

@tyuio - Аз наистина не съм писал драйвер никога. Ама тук май си говорихме за начинаещи. Ти познаваш ли някой който е започнал да се учи с писане на драйвери?
Това че много езици ползват приблизително синтаксиса на C не означава че са eднакви с него, нито че C е по-добър или по-лесен от тях. C# съдържа C в името си и прилича по синтаксис на него, но едва ли ще намериш много хора които да се съгласят че двата езика си приличат. Ключовите думи и запазените символи са много малка част от един език за програмиране.
Това кой език колко се ползва също не е много определящо. Той и COBOL се ползва много все още, но не съм видял никой да го предлага.
А защо предпочитам C++ пред C виж по-нагоре.
Активен

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Re: Език за начинаещи
« Отговор #19 -: Jan 15, 2010, 16:14 »
...C# съдържа C в името си и прилича по синтаксис на него...
А на мен някой ще ми обясни ли на какво казвате "синтаксис", че стана голяма каша.
Между printf() и Console.Write() не виждам общ синтаксис. Тука до мен ми подсказват, че на края на всеки ред и в C и в C# се пишело ";" (точка и запетая), но пак питам какво е синтаксис?
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

bop_bop_mara

  • Напреднали
  • *****
  • Публикации: 2433
  • Distribution: Debian Testing
  • Window Manager: LXDE
  • Cute and cuddly
    • Профил
Re: Език за начинаещи
« Отговор #20 -: Jan 15, 2010, 16:26 »
А на мен някой ще ми обясни ли на какво казвате "синтаксис", че стана голяма каша.
Между printf() и Console.Write() не виждам общ синтаксис. Тука до мен ми подсказват, че на края на всеки ред и в C и в C# се пишело ";" (точка и запетая), но пак питам какво е синтаксис?
http://en.wikipedia.org/wiki/Programming_language#Syntax :) Точно това, което си мислиш е синтаксис :)

Е тук е първата разлика между гледните ни точки :) За мен C и C++ са различни езици. В C++ освен че можеш да пишеш обектно ориентиран код имаш прихващане на грешки, стандартна библиотека със стрингове, контейнери и т.н., в C нямаш нищо подобно. Като пишеш на C++ се занимаваш с управление на паметта само когато поискаш, докато в C се налага да го правиш постоянно.
А аз изобщо не ги приравнявам 2та езика, но за мен излишният е C++. Ако искаш ООП - Python е ООП :) (Мнението е мое, не го налагам :) )

Цитат
Аз съм писал малко на пролог. Ужасно е бавен и почти няма готови библиотеки за него, тоест не може да напишеш реална програма.
Пролог не е език за писане на реална програма. Той е език, написан от хората, занимаващи се с математическа логика, за тях самите. Пролог може да ти развива мисленето. Поне така твърдят :) Иначе и във ФП има достатъчно рекурсия.

Цитат
Ама тук май си говорихме за начинаещи.
Именно, говорим си за това на кой език да започнем да се учим да програмираме, а не на кой език да започнем да се учим да работим. Вярно е, че програмиране се учи с програмиране, но е вярно и, че всяко растение трябва да си има корени, за да живее :)
Активен

ivanatora

  • Напреднали
  • *****
  • Публикации: 658
  • Distribution: Ubuntu 10.04
  • Window Manager: Fluxbox
    • Профил
    • WWW
Re: Език за начинаещи
« Отговор #21 -: Jan 15, 2010, 17:01 »
Някой от препоръчалите C пред C++ може ли да ми обясни защо въобще е необходимо да се занимаваш с ръчно управление на паметта в наше време. Защо трябва да се чудиш сега трябва ли да викам free за този char* или не. И когато ти потрябва произволен контейнер (списък, хеш таблица, стек и т.н.) да си го пишеш сам, вместо да ползваш готовите.
Моето мнение е че това е идеята на обучението. Да видиш как стават нещата. Да си направиш сам стековете, списъците и всички играчки по паметта. Да усетиш къде какви тънки моменти има, преди да почнеш да ползваш всички ресурси на готово. Обучението трябва да започва от малките неща и постепенно да се стига до по-трудните с градация.
Тук не сравняваме 'тоя език' VS 'оня', защото такива общи сравнения въобще не може да има. Говорим кое е по-подходящо точно за целите на обучението.
« Последна редакция: Jan 15, 2010, 17:05 от ivanatora »
Активен

v_badev

  • Напреднали
  • *****
  • Публикации: 1355
    • Профил
Re: Език за начинаещи
« Отговор #22 -: Jan 15, 2010, 17:19 »
Всъщност какво точно ти пречи да напишеш стек или хеш таблица на C++? До колкото знам в НБУ точно по този начин учат структури данни. По твоята логика правилният начин за запознаване с Linux е да си направиш LFS за да схванеш нещата как се правят. И без това правилният начин за научаване на един език е като си купиш добра книга по темата и си я прочетеш.
« Последна редакция: Jan 15, 2010, 17:21 от v_badev »
Активен

bop_bop_mara

  • Напреднали
  • *****
  • Публикации: 2433
  • Distribution: Debian Testing
  • Window Manager: LXDE
  • Cute and cuddly
    • Профил
Re: Език за начинаещи
« Отговор #23 -: Jan 15, 2010, 18:37 »
Къде учат СД другояче?? И ние сме си писали всякаквите структури, при това на Джава, при това лекторът ни показваше суперкрасив и изпипан код за тия структури, на практика от 3те курса УП, ООП, СД точно там се научихме на стил и на "духа на Джава".
Активен

v_badev

  • Напреднали
  • *****
  • Публикации: 1355
    • Профил
Re: Език за начинаещи
« Отговор #24 -: Jan 16, 2010, 16:41 »
Имах в предвид че в НБУ ползват C++ за да учат структури от данни. В ТУ, поне преди десетина години се учеха на Pascal. Кода е горе-долу еквивалентен на кода на C, само без адресната аритметика.

Аз също препоръчах Python, просто се опитах да разбера защо хората предпоръчват да се започва със C вместо със C++.

//off-topic
Какво значи УП? ООП и СД ги разшифровах, но това не се сещам какво значи.
Активен

progmetal

  • Напреднали
  • *****
  • Публикации: 130
  • Distribution: Arch Linux
  • Window Manager: KDE 4.13.0
    • Профил
Re: Език за начинаещи
« Отговор #25 -: Jan 16, 2010, 17:02 »
Увод в програмирането  :)
Активен

tyuio

  • Гост
Re: Език за начинаещи
« Отговор #26 -: Jan 16, 2010, 17:43 »
Смятам че тази тема освен за флейм за нищо друго не става! Не помагаме изобщо а си говорим на нямакъв висок език само за спорта кое против нещо.

Към питащия:

Отговори си на въпроса какво искаш от програмния език който искаш да учиш и дали той отговаря на изискванията ти. Ако найстина си учил тези два езика за които споменаваш може да не си наистина напълно начинаещ.
Езиците си имат специфични плюсове и минуси както всичко около нас примерно:
РНР е страхотен за уеб но почти не става за десктоп приложения ако не говорим за връзката му с гтк+. Има голямо комюнити и у нас?

Джава - много як език става много добре и за десктоп и за уеб и телефони. Не искам да флейма но все пак споменавам че е (поправка) МАЛКО ПО бавен особенно за големи програми (поправка) за десктоп които иначе имат много билблиотеки за почти всичко което се сетиш.

питон и руби - много добри езици с лесен синтаксис и начин на работа. Няма много големи проекти за него и малка общност у нас макар че се развива.

пърл - нещо позамира напоследък щото много се бави новата версия. странен синтаксис и понякога почти не четим но иначе много гъвкаф и страхотен за системно администриране и уеб макар че рнр вече го е задминал :)

джаваскрипт - много ползван в уеб приложенията но бързо наваксва и скоро ще излезе от лоното на браузерите лесен синтаксис
има още ама стига ако има флейм да започва !
« Последна редакция: Jan 16, 2010, 21:38 от tyuio »
Активен

BlackMetal

  • Напреднали
  • *****
  • Публикации: 93
    • Профил
Re: Език за начинаещи
« Отговор #27 -: Jan 16, 2010, 17:45 »
Аз не съм съгласен с никой препоръчал C/C++/C# .... (C# = C ++ ++ = E :D C++ = D, D++ = E :D :D)

Нека да започне с нещо с което да не се притеснява за контрол на памета, а да програмира, като наблегне на алгоритмичната част, после щe ако има интерес много бързо ще се научи да ползва free() правилно, да работи с поинтери и каквото си поиска на какъвто си език поиска.

Аз например започнах да се уча на Java.
Активен

Lord Bad

  • Напреднали
  • *****
  • Публикации: 1667
  • Distribution: Fedora 13
  • Window Manager: GNOME
  • Jedi Knight
    • Профил
Re: Език за начинаещи
« Отговор #28 -: Jan 16, 2010, 19:02 »
Цитат
Джава - много як език става много добре и за десктоп и за уеб и телефони. Не искам да флейма но все пак споменавам че е малко бавен особенно за големи програми за които иначе имат много билблиотеки за почти всичко което се сетиш.

Такива изказвания за мен не помагат на никой, защото нямат нищо общо с реалността. Първо какво значи, Java е бавен език??? Виртуалната машина можеш да кажеш, че е бавно, но езика - това е абсурд... Настрана от това изказване актуалната виртуална машина Java 6 HotSpot генерира код, който е само 20% процента по-бавен от native С приложение на първо четене и при достатъчно дълго изпълнение на едно приложение виртуалната машина ще го оптимизира и кешира толкова тежко, че може да тръгне по-бързо от и native C приложението. Не искам да влизам в детайлите, но това че виртуалната машина е бавна е уникална заблуда, която датира от времето на Java 1.3 да речем... И половината така наречени "enterprise" приложения са писани на Java - интересен факт, ако наистина не е подходяща за големи приложения ;-)

Нещата стават флейм, когато някой се изказва на общо основание без да е съвсем наясно какво говори. Няма да коментирам другите точки, че иначе сигурно аз ще бъде набеден за флейм(пък и ме мързи), но все пак е хубаво да си проверявате фактите преди да пишете нещо...
Активен

Fuelled by Fedora 13 "Goddard"
====================================
Rock it!

tyuio

  • Гост
Re: Език за начинаещи
« Отговор #29 -: Jan 16, 2010, 21:34 »
Добре де, не се изразих правилно поправих се  МАЛКО ПО БАВЕН и не съм казал че не е за големи приложения напротив знам с какво ползват големите бази данни, говорих за десктоп. Ся знам какво ще стане ако се появи някой руби и питонски програмист :)
« Последна редакция: Jan 16, 2010, 21:39 от tyuio »
Активен