singlepost

Как научиться программировать на С? Узкие специализации программиста. << На главную или назад  

Всем привет. Я начинающий программист. Учусь в колледже. Изучаем Delphi, но уже сейчас хочу самостоятельно начать изучение С, так как в нашей программе его и не предвидется, а все знакомые программеры говорят, что без него не обойтись. Вопросов два.

1) В чём (в какой проге) вообще можно прогить на Сях? Например, в Дельфи всё как-бы без заморочек – есть единая среда разработки, а вот на Сях, насколько я понимаю, их много, да? Какие они бывают? Какая лучше? Где взять? Или я ошибаюсь?

2) Есть ли какая-нибудь книга или видеоучебник в интернете, свободные для скачивания, коорая(-ые) помогли вам при изучении языка?

Ну, и, ваши рекомендации начинающему программисту… В какую сторону стоит двигаться? Сейчас столько всего… не знаешь, куда податься… Computer vision, web-programing, database programing, список как вы сами понимаете можно продолжать до бесконечности, а вот чем же всё-таки заняться, не совсем понятно… В СНГ обучают как я понял только обобщенному программированию, а вот узким специализациям – нет…

Короче, буду благодарен за ваши советы, опыт, рекомендации :)

53 ответов в теме “Как научиться программировать на С? Узкие специализации программиста.”

  1. 53
    Артём Шалхаков ответил:

    2 Олег Андреев
    >на Си написаны языки высокого уровня типа Руби, Питона, Io, Эрланга и т.д.
    не все. есть self-hosting реализации (наблюдал воочию Clean, GHC, Larceny Scheme).

    ну и так или иначе, на Си сейчас целесообразно писать только самый низкий уровень.

    >Страуструпа читать легко и приятно
    все-таки бывают чтива поинтереснее :)

    2 Евгений Михайлин
    >С++ позволяет достичь производительности большей чем все остальные, кроме С\asm.
    да. но опять же, найти спеца, который умеет хорошо писать на Си++ — очень и очень сложно (практически это живой компилятор)

    >с хаскелем и окамлом проблема другая – там человекочасы вообще золотые будут, тк спецов с огнем не сыщешь.
    спецов всегда не хватает, эх..

    ЗЫ ну да ладно. по-моему, мы нашли общий язык. :)
    ЗЗЫ в общем, вывод примерно таков: знать Си не помешает, но прежде чем заняться кодописательством, не вредно будет оглянуться по сторонам

  2. 52
    Олег Андреев ответил:

    Артём: на Си написаны языки высокого уровня типа Руби, Питона, Io, Эрланга и т.д.

    Шилдта не рекомендую, слишком задроченный чувак. Еще не рекомендую сразу бросаться на Си++. Страуструпа читать легко и приятно, но лучше для начала понять что такое Си без плюсиков. И почему Си — это такой красивый язык ассемблера, на самом деле :-)

    Рекомендую оригинальное сочинение Кернигана и Ритчи, а так же читать сорцы интересных оупенсорсных проектов на Си. Я, например, Си учу по исходниками любимых языков и тулов: Ио, Руби, Рубиниус, Git.

  3. 51
    Евгений Михайлин ответил:

    "немного не так. я бы сказал, что нужно найти что-то среднее. если вы будете разрабатывать одну игру за 3 года, то за это время сменится два поколения процессоров и видеокарт, и вся ваша работа устареет."
    HL2 тоже долгостроем был ))

    "необязательно, что игра, написанная на Си++, будет быстрой. (да, я наигрался в тормозящие игры :) — например, в HL2 очень плохой culling, ибо древний алгоритм PVS, унаследованный практически прямиком из Quake)"
    естественно. Более того, игра плохо написанная на С++ (а хорошо писать на этом языке не так уж и просто), будет медленнее чем хорошо написанные на других языках. Но С++ позволяет достичь производительности большей чем все остальные, кроме С\asm.

    "драматизируете. лисп, хаскель и окемл не такие уж медленные.
    закон мура всех нас уравняет. :) "
    с хаскелем и окамлом проблема другая – там человекочасы вообще золотые будут, тк спецов с огнем не сыщешь. Разработка на С++тоже недешева(в сравнении с Java\.NET), но куда дешевле функциональных языков. Собственно в этом основная причина непопулярности функциональных языков – они слишком сложны для индусов и разработка дорогая получается.

  4. 50
    Артём Шалхаков ответил:

    2 Евгений Михайлин
    >производительность результата критичнее времени разработки
    немного не так. я бы сказал, что нужно найти что-то среднее. если вы будете разрабатывать одну игру за 3 года, то за это время сменится два поколения процессоров и видеокарт, и вся ваша работа устареет.

    необязательно, что игра, написанная на Си++, будет быстрой. (да, я наигрался в тормозящие игры :) — например, в HL2 очень плохой culling, ибо древний алгоритм PVS, унаследованный практически прямиком из Quake)

    >затраты на человекочасы ниже чем упущенная выгода от низких продаж, вызванных неоправданно завышенными системными требованиями.
    драматизируете. лисп, хаскель и окемл не такие уж медленные.
    закон мура всех нас уравняет. :)

    >В вебе удобнее иметь скелет нормального приложения, чем паутину из либ на каждый чих.
    вопрос религиозный. мне удобнее пользоваться несколькими loosely coupled библиотеками. (пишу на клиентской стороне)

    >для написания своего блокнота, функциональщина – оверхед однозначно.
    да почему же сразу оверхед?
    наоборот, многие вещи выражаются проще, чем при подходе ООП. (например, парсеры получаются проще, а грамматика задается прямо в исходном коде, не прибегая к специальным программам)

  5. 49
    Владимир Unnamed ответил:

    Что касается изучения Ц++ – бери Code::Blocks и MinGW который идет с ней в комплекте.

    Шикарное бесплатное ПО – для учебы в самый раз.

  6. 48
    Евгений Михайлин ответил:

    "тут дело не в мозгах (они по-любому нужны). дело в человеческом времени, затраченном на достижение результата (оно нынче дорогое, а машинное — напротив, и с каждым днем дешевеет). если язык позволяет мультипрограммирование, то это огромное преимущество.
    быстрее разрабатываем — больше времени на тестирование, отладку и добавление новых фич."

    Вот например геймдев – это такая отрасль, где производительность результата критичнее времени разработки. Тк затраты на человекочасы ниже чем упущенная выгода от низких продаж, вызванных неоправданно завышенными системными требованиями.
    Можно и другие поискать. С++ там самое место.

    "лучше буду интегрировать небольшие библиотеки, чем юзать фреймворк, 90% которого мне не нужно. с code bloat боремся, одним словом. ^_^"
    не везде применимо. В вебе удобнее иметь скелет нормального приложения, чем паутину из либ на каждый чих.

    "и очень зря. структурный редактор на функциональном языке писать будет одно удовольствие :) "
    если мне потребуется функциональность эмакса – я возьму эмакс )) а для написания своего блокнота, функциональщина – оверхед однозначно.

  7. 47
    Леонид Максимов ответил:

    определенно. тем, кто на нем пишет по работе.

  8. 46
    Евгений Гаврин ответил:

    > Изучи лучше Java. Обалденный бесплатный язык
    За Си определенно надо платить =))

  9. 45
    Артём Шалхаков ответил:

    2 Евгений Михайлин
    >Objective-C весьма неплохой язычокс. Высокоуровневый. В чем проблема?
    в том, что он тянет за собой все недостатки Си (отсутствие вменяемых модулей, макросы, плохонькая система типов, отсутствие средств метапрограммирования, etc.) к тому же ручное управление памятью в обычных user-space прогах — это ахтунг.

    неужели это не очевидно?

    (работал я с ним немного в GNUstep, и полностью разочаровался — с OCaml и Haskell не сравнить, те даже компилируются быстрее)

    >Ежу понятно, что если надо выжать максимум производительности, для этого надо применить максимум мозгов.
    тут дело не в мозгах (они по-любому нужны). дело в человеческом времени, затраченном на достижение результата (оно нынче дорогое, а машинное — напротив, и с каждым днем дешевеет). если язык позволяет мультипрограммирование, то это огромное преимущество.
    быстрее разрабатываем — больше времени на тестирование, отладку и добавление новых фич.

    >Попахивает велосипедостроительством.
    нет, это религиозное убеждение :)
    лучше буду интегрировать небольшие библиотеки, чем юзать фреймворк, 90% которого мне не нужно. с code bloat боремся, одним словом. ^_^

    >Криво выразился, но смысл в том что я не буду писать текстовый редактор на хаскелле или окамле.
    и очень зря. структурный редактор на функциональном языке писать будет одно удовольствие :)

    emacs, написанный на лиспе, уже 30 лет живет и процветает :)

  10. 44
    Евгений Михайлин ответил:

    "в разработке компьютерных игр (Си++)"
    производительность! Предложи другое решение. MS пытается продвинуться с XNA, но не особо верю.
    "на десктопе Windows (Си)"
    большая часть приложений уже написана, никто заново переписывать не будет.
    "на десктопе MacOSX (Objective-C — почти тот же Си, только в профиль, т.е. с тонкой надстройкой объектной системы SmallTalk)"
    Objective-C весьма неплохой язычокс. Высокоуровневый. В чем проблема?

    "гмм… Си и Си++ будут быстрее на одном ядре, да. но на двух и более — нет. (можно использовать STM или традиционные методы параллелизации, но это сильно усложняет разработку/сопровождение/отладку)"
    Ежу понятно, что если надо выжать максимум производительности, для этого надо применить максимум мозгов.

    "фреймворки не нужны."
    Попахивает велосипедостротельством. Для того же Руби есть весьма неплохие фреймворки (RoR, Merb).

    ""совсем узких задач"? это что, прикол?"
    Криво выразился, но смысл в том что я не буду писать текстовый редактор на хаскелле или окамле.

  11. 43
    Алексей Митров ответил:

    Изучи лучше Java. Обалденный бесплатный язык с синтаксисом (если смотреть на уровень не выше функции) эквивалентным C.
    Я считаю, что если ты не Embeded то на C завязываться не стоит.

  12. 42
    Евгений Гаврин ответил:

    Да и не путайте понятие – vim – текстовый редактор, а не средство разработки.

  13. 41
    Евгений Гаврин ответил:

    А Вижуал вас чем не устроил?

  14. 40
    Алексей Харлампиев ответил:

    "рекомендую программировать на Borland C++" "рекомендую программировать на Microsoft Visual C++".
    Люди, вы не правы. Очень не правы, на мой взгляд. Объясню почему.

    Среды разработки типа Borland делают очень многое за вас. Автоматически создают объявления классов, makefile, рассовывают всё по файлам, автоматически создают обработчики событий..e.t.c.

    Я помню как я классе в 9 программировал на Borland Delphi. Получались какие-то штуки, некоторые довольно интересные. Даже крестики-нолики написал. НО! Я никогда не понимал, как действуют обработчики событий, так как мне не приходилось их писать самому – за меня всё делал Borland Delphi. В програме были классы, но я понятия не имел, что это такое, так как они тоже создавались самостоятельно.

    В общем, моя рекомендация – vim и g++.

  15. 39
    Артём Шалхаков ответил:

    2 Евгений Михайлин
    >а где повален именно C\C++?
    на десктопе Linux (Си), в разработке компьютерных игр (Си++), на десктопе Windows (Си), на десктопе MacOSX (Objective-C — почти тот же Си, только в профиль, т.е. с тонкой надстройкой объектной системы SmallTalk)
    ну и в целом, разные программки (например, window и display manager для сервера X), которые можно с успехом написать на том же Лиспе, пишутся на Си (типа, "ибо так быстрее работает"), со всеми его граблями

    >Такую можно делать либо на C (что есть еще больший изврат – см GTK), либо на C++.
    гмм… Си и Си++ будут быстрее на одном ядре, да. но на двух и более — нет. (можно использовать STM или традиционные методы параллелизации, но это сильно усложняет разработку/сопровождение/отладку)

    >А вот биндинги к ней можно уже крутить к чему угодно
    каков смысл в этих биндингах? либо сразу рассчитывайте на независимость от ЯП, либо…

    ну и вообще, все как обычно: сначала пишем "ядро", потом начинаем его расширять разными скриптами (или хотя бы просто усложненными файлами конфигурации), потом натыкаемся на ограничения и опять "расширяем".. в результате появляется недо-язык программирования, bug-ridden, ill-specified damn slow half of Common Lisp (это я о файлах конфигурации Apache/PHP, к примеру)

    пойнт: писать все в высокоуровневом языке и пользоваться EDSL'ами (ну и вставки Си пригодятся)

    >есть еще надобность в средствах разработки, фреймворках
    профайлеры и отладчики есть у этих языков, IDE — ну, кой-какие есть (режимы в emacs или vim :) + CEDET и т.п.)
    фреймворки не нужны.

    >Все остальные – вещи для совсем совсем узких задач.
    "совсем узких задач"? это что, прикол?

  16. 38
    Евгений Михайлин ответил:

    "я об этом же самом и говорю. :) magic bullet не существует, поэтому практика повального использования Си (или другого языка, в этом случае — именно Си) порочна. Си++ тут тоже бочком затесался (с ужасом вспоминаю Qt и FoxToolkit)."

    а где повален именно C\C++? по рейтингу популярности С уступает той же жаве (а С++ там еще дальше).Но это с учетом кучи ERP проектов. Если брать десктоп аппликухи – то да, в основном С\С++, но их писали в бородатые годы и никто не будет переписывать фотошоп, офис или студию с нуля. А что до повальности жавы – дык тут следует говорить о повальности корпорейт интегрейшн булшит софта, и жаве там самое место.

    "Qt — тихий ужас. замутили велосипедный препроцессор, потому что уткнулись в ограничения Си++. не тот язык выбрали."
    они делали быструю GUI библиотеку. Такую можно делать либо на C (что есть еще больший изврат – см GTK), либо на C++. А вот биндинги к ней можно уже крутить к чему угодно – см Qt Jambi (Java) и PyQT (Python)

    "я утверждаю что их следует писать на более высокоуровневых языках (привел список)."
    кроме языка есть еще надобность в средствах разработки, фреймворках и тп.Таковые есть из того списка у Питона и (несколько менее) у Руби. Все остальные – вещи для совсем совсем узких задач.

  17. 37
    Дмитрий Матвеев ответил:

    >невежество педалит
    проведите ликбез ;)

  18. 36
    Артём Шалхаков ответил:

    согласен с Шабановым.
    Haskell, правда, можно заменить на OCaml, Scheme, etc.

    2 Дмитрий Матвеев
    >Вот когда сделают, например, убийцу Autodesk Maya на ХForms,
    >вот тогда и посмотрим
    LOL, невежество педалит.

  19. 35
    Дмитрий Шалхаков ответил:

    Вот кстати блогпост по теме
    //vshabanov-ru.blogspot.com/2008/07/blogpost.html

  20. 34
    Дмитрий Матвеев ответил:

    > никаких memleaks
    это зависит не от языка, обычно

    > сказать больше нечего?
    Вот когда сделают, например, убийцу Autodesk Maya на ХForms, вот тогда и посмотрим :D

    З.Ы. А тем временем топик-то про C ;)

  21. 33
    Артём Шалхаков ответил:

    2 Дмитрий Матвеев
    >Даешь hi-end редактор 3D-графики на XForms!!!
    уж точно получше, чем на Си.
    во всяком случае, никаких segfault'ов, никаких AV, никаких memleaks, возможность распараллелить приложение, etc.

    сказать больше нечего?

  22. 32
    Дмитрий Матвеев ответил:

    Мда…
    Даешь hi-end редактор 3D-графики на XForms!!!

  23. 31
    Артём Шалхаков ответил:

    2 Дмитрий Матвеев
    >Ни то, ни то, тогда что же?
    XForms, CSS, SVG — хватит для практически любого GUI-приложения. декларативно, переносимо между устройствами и нижележащим кодом. основано на XML (можно считать минусом, но мы не будем :) ) сами технологии довольно распространены (исключая XForms-процессоры, но я видел несколько реализаций — одну на Си++, хых))

    в XForms есть нечто вроде FRP (функционально-реактивное программирование) — за этим будущее, ИМХО. кстати, сразу хочу отметить, что элементы FRP есть также в распиаренной JavaFX и не-очень-известном OpenLaszlo.

    команда GNOME один за другим создает какие-то мм… языки программирования (Vala и еще какой-то, название забыл — анонсировали на днях). это говорит о том, что заипались на Си писать. ^_^

    кстати, Apple, Adobe и Mozilla пытаются соединить веб-приложения с десктопом (AIR, Prism, Cappuccino/Objective-J/SproutCore). неужели и это тоже ни о чем не говорит?

    Qt — тихий ужас. замутили велосипедный препроцессор, потому что уткнулись в ограничения Си++. не тот язык выбрали.

    и всюду — signals&slots, виджеты-классы, наследование и наследование, onthis, onthat, onetc…неоригинально ни разу. (выделяется разве что Apple и Cocoa/Carbon)

  24. 30
    Дмитрий Матвеев ответил:

    2Артем Шалхаков
    > с ужасом вспоминаю Qt и FoxToolkit
    > лично меня не устраивает GTK+

    Ни то, ни то, тогда что же?

  25. 29
    Артём Шалхаков ответил:

    2 Леонид Максимов
    >не вводите людей в заблуждение, C/C++ все еще достаточно широко используются.
    да, используются. пойнт в том, что не по назначению. автору топика следует об этом знать.

    >например, на C (без плюсов) написаны сервера некоторых игр
    да, мне это известно (тоже интересовался ^_^) — но не лучше ли их будет писать на Erlang? (сравнение Apache и yaws могу привести)

    2 Евгений Михайлин
    >их тут причем?
    вы спросили об обосновании того, что "много прикладных программ пишут на Си, но это неправильно" — я утверждаю что их следует писать на более высокоуровневых языках (привел список).

    >HAL в Singularity написан на C++. Низкий уровень – да, на C
    Singularity — эксперимент, и до "промышленного использования" этой ОС ооочень далеко. и кстати, вы так и не опровергли мысль о том, что С++ не подходит для разработки ядра ОС.

    >А не надо мешать C и C++ – это 2 РАЗНЫХ языка с РАЗНЫМИ областями применения
    никто и не перемешивает.) я говорил об использовании Си для прикладных программ, и об использовании Си++ для kernel'ов. (оба случая — применение не того инструмента)

    >Вывод – нету языка, на котором следует писать большинство приложений, нету!
    я об этом же самом и говорю. :) magic bullet не существует, поэтому практика повального использования Си (или другого языка, в этом случае — именно Си) порочна. Си++ тут тоже бочком затесался (с ужасом вспоминаю Qt и FoxToolkit).

    >корпорейт булшит интегрейшн
    хорошее выражение :)

    2 Евгений Гаврин
    >Скажи это разработчикам GTK+ и, частично, среды GNOME
    лично меня не устраивает GTK+ и GNOME, и я их не использую.

    2 Рома Соловей
    >Кстати, а что, прям такая большая разница между С и С++?
    да, между тру-Си++ и Си очень большая (см., например, Boost, как пример того, как _не надо_ делать) — но обычно пишут на Си++ в стиле Си, гы :)

  26. 28
    Артём Шалхаков ответил:

    2 Рома Соловей
    >Я имею в виду, программы которые например содержат…
    объем данных в БД? структурированы ли данные? (document-centric vs data-centric) количество одновременно работающих пользователей/транзакций? целевая платформа? (Win, Lin, Mac?)

    так и хочется предложить веб-интерфейс :)

  27. 27
    Рома Соловей ответил:

    Вот это да, спасибо, многое объяснили, буду думать и теперь искать "свою нишу"! А чем вы, собственно говоря, занимаетесь (ну, так, просто интересно, для статистики). Кем вы работаете и какие языки вам для этого нужны?

    Кстати, а что, прям такая большая разница между С и С++? А С#?

    А вот, допустим, перед вами стоит задача – написать программу для библиотеки (эт просто, от балды взял), на чём вы будете писать её? На Дельфях или Си? На Дельфи вообще сейчас кто-то пишет?

    Так, для информации скажу, что сейчас мой выбор колеблется между Веб-программированием и программированием приложений (не знаю, как это называется нормально, но думаю, всё и так понятно).

    З.Ы.: Всем в отдельности спасибо за такое исчерпывающее обсуждение!

  28. 26
    Рома Соловей ответил:

    З.Ы.2: про вопрос о программе для библиотеки. Я имею в виду, программы которые например содержат в себе базу данных не важно чего – юрлиц, или физлиц или книг или документов, предоставляют доступ, обработку, возможность редактировать информацию по локальной сети или же через интернет. На чём такие программы пишут вообще?

  29. 25
    Евгений Гаврин ответил:

    #16
    >Артём Шалхаков
    >Си не подходит для написания большинства приложений, и точка.

    >Скажи это разработчикам GTK+ и, частично, среды GNOME

    А так же авторам большинства приложений

  30. 24
    Дмитрий Матвеев ответил:

    #16
    > Артём Шалхаков
    > Си не подходит для написания большинства приложений, и точка.

    Скажи это разработчикам GTK+ и, частично, среды GNOME

  31. 23
    Venedig Nordens ответил:

    во-во кстати, чем больше языков знаешь – тем шире область, в которой можешь себя применить.
    Все равно, независимо от языка, нужно учить теорию программирования

  32. 22
    Сергей Богданов ответил:

    to Евгений I AM CATAR Михайлин: ИМХО, исчерпывающий ответ)))

  33. 21
    Евгений Михайлин ответил:

    "посмотрите на современные ЯП: Scheme, Python, Ruby, OCaml, Haskell, Erlang, etc."
    их тут причем?

    "сам D еще не готов к "индустриальному использованию" — но уже близко, ИМХО"
    вероятность того, что D займет нишу C как языка системного программирования в ближайшие 5-7 леточень мала.Против D ничего не имею, языкприятен, но давайте смотреть объективно.

    "для указанных ниш вполне можно использовать другие ЯП. для математики пользуют Fortran или какие-нибудь array programming languages."
    скорость, скорость, скорость…

    "вот именно. найдите, если не сложно."
    HAL в Singularity написан на C++. Низкий уровень – да, на C. А все что над халом вообще в managed code )) . MSкруто извращается, неправда ли?

    "Интересно узнать, что же такое такое особенное для гейдева используют? "
    МС пытается пересадить на XNA ))

    "Си не подходит для написания большинства приложений, и точка. слишком низкоуровневый."
    А не надо мешать C и C++ – это 2 РАЗНЫХ языка с РАЗНЫМИ областями применения, и отнюдь неважно в этом случае что первый суть почти подмножество второго.

    Кроме того, если заменить в вашем предложении C на любой другой язык а низкоуровневый на другую характеристику – то оно останется в силе! Вывод- нету языка, на котором следует писать большинство приложений, нету! Универсализм умер,попытки его распространения – ересь корпораций МС и Sun.
    Для C место – системное программирование. С++ – геймдев и прочие места где нужна производительность. Те же БД.Для Явы – корпорейт булшит интегрейшн +кроссплатформенные прикладные аппликухи. .NET – тоже самое, только WinOnly. Эрланг -хорошо распараллеливающиеся системы. И тд и тп.

  34. 20
    Евгений Михайлин ответил:

    А автору темы следуетзнать, что суть программирования – это человеческий мозг а не туева куча языков. Язык – инструмент для конкретной задачи. От задачи и следует плясать.
    Посему рекомендую таки подумать, чем именно хочется заниматься.

  35. 19
    Евгений Гаврин ответил:

    Леонид, у Вас очень лаконичная страница =)

  36. 18
    Леонид Максимов ответил:

    2 Артём Шалхаков
    не вводите людей в заблуждение, C/C++ все еще достаточно широко используются.

    например, на C (без плюсов) написаны сервера некоторых игр (года 4 назад сам читал только вышедший код, искал, как можно… ну вы понимаете, получить игровые преимущества).

    если отойти от игр, то на C/C++ написано огромное количество свободного софта различной тематики, так что переход этих языков в разряд вымирающих будет постепенным и медленным, и в ближайшие несколько лет заметного падения интереса к ним не ожидается.

  37. 17
    Тимур Багаутдинов ответил:

    >> для указанных ниш вполне можно использовать другие ЯП
    Как ни странно, но используют именно С++

    Взять тоже самое параллельное программирование. Есть реализации библиотек MPI и OpenMP и для Фортрана тоже, но разрабатывают все же подавляющее большинство на С++

    Интересно узнать, что же такое такое особенное для гейдева используют?

  38. 16
    Евгений Гаврин ответил:

    Make love, not war.

  39. 15
    Артём Шалхаков ответил:

    >Обосновать?
    Си морально устарел, неужели непонятно? (C99 даже не сильно-то поддерживается в компиляторах)
    посмотрите на современные ЯП: Scheme, Python, Ruby, OCaml, Haskell, Erlang, etc.

    >покажите мне компилятор D для какойнибудь Amiga
    GDC, front-end для GCC :)
    сам D еще не готов к "индустриальному использованию" — но уже близко, ИМХО

    >Ниша? Геймдев + всякая математика + базы данных.
    для указанных ниш вполне можно использовать другие ЯП. для математики пользуют Fortran или какие-нибудь array programming languages.

    >C обеспечивает реальную кроссплатформенность.
    С этим никто не спорит :)

    >ядра пишут. В гугл.
    вот именно. найдите, если не сложно.
    я нашел только SymbianOS — все остальные, как сговорились, пишут на Си.

    повторю свой пойнт еще раз:
    Си не подходит для написания большинства приложений, и точка. слишком низкоуровневый.

  40. 14
    Евгений Михайлин ответил:

    "много прикладных программ до сих пор пишут в Си (или Си++) — и это неправильно, но исторически сложилось."
    Обосновать?

    "Си предназначен для низкоуровневых дел (например, ядро ОС и драйверы) — но и там его можно заменить на Forth или D."
    Неможно. Насчет форта ничего не скажу, но покажите мне компилятор D для какойнибудь Amiga. C обеспечивает реальную кроссплатформенность.

    "ниша Си++ мне не ясна (ядра на нем не пишут, а для прикладных программ он не подходит) — знать его тоже неплохо будет, но писать на нем программы лучше не стоит :) "
    ядра пишут. В гугл.
    Ниша? Геймдев + всякая математика + базы данных. Ну и разумеется поддержка тысяч существующих вещей.

    PS не хотел затевать очередной холивар, но откровенная ложь взбесила.

  41. 13
    Антон Ковалёв ответил:

    про среды и про книги уже всё сказали, повторять не буду. скажу про мм специализацию. сейчас на какой сайт поиска работы или для фрилансеров не зайди везде нужны большей частью веб программисты… ну и 1с программисты ещё..

  42. 12
    Артём Шалхаков ответил:

    2 Роман Гафиятуллин
    >Вот пример чистейшего холиварного изречения… =\
    это следствие моей неосведомленности, только и всего :)
    не нужно искать подвох там, где его нет

  43. 11
    Андрей Подкорытов ответил:

    Гаглоеву: А ты считаешь это он один все сделал? Ффф… Точто он главный это абсолютно верно, но Шилдт был главным в комитете разработки ANSI/ISO компилятора C++. Вот так!

  44. 10
    Venedig Nordens ответил:

    игры на нем пишут, причем подавляющее большинство

  45. 9
    Роман Гафиятуллин ответил:

    Артём Шалхаков > ниша Си++ мне не ясна (ядра на нем не пишут, а для прикладных программ он не подходит)

    Вот пример чистейшего холиварного изречения… =\

  46. 8
    Артём Шалхаков ответил:

    Леонид Максимов +1
    прежде чем начать пользоваться какой-нибудь IDE, нужно ознакомиться с toolchain'ом (например, GNUтые программы: gcc, gmake, gdb, etc.)

    >В чём (в какой проге) вообще можно прогить на Сях?
    в качестве редактора сначала сойдет обычный блокнот (или nano) — потому что легко осваивается, в отличие от vim/emacs (советую последний, можно все подкрутить и настроить, как следует :) )

    >Какие они бывают? Какая лучше? Где взять? Или я ошибаюсь?
    это каждый решает сам: о вкусах ведь не спорят :)
    //en.wikipedia.org/wiki/List_of_integrated_deve...

    >Есть ли какая-нибудь книга или видеоучебник в интернете
    очень много, но K&R рулят)

    >В какую сторону стоит двигаться? Сейчас столько всего… не знаешь, куда податься…
    самое важное — использовать подходящий для задачи язык. много прикладных программ до сих пор пишут в Си (или Си++) — и это неправильно, но исторически сложилось.

    Си предназначен для низкоуровневых дел (например, ядро ОС и драйверы) — но и там его можно заменить на Forth или D.

    ниша Си++ мне не ясна (ядра на нем не пишут, а для прикладных программ он не подходит) — знать его тоже неплохо будет, но писать на нем программы лучше не стоит :)

    мне кажется, программистам сейчас стоит обратить свое пристальное внимание на функциональные языки: Haskell, OCaml, Erlang. (причины сугубо объективные: мультипрограммирование там проще)

  47. 7
    Тимур Багаутдинов ответил:

    Да лана, почему без С никак не обойтись? )) Можно обойтись и еще как

    А если уж в эту степь тянет, то учи С++, а точнее даже ООП. После С, а особенно, если глубоко залезешь туда, будет сложно себя сломать.

    Про среду разработки уже сказали, подойдет Visual Studio. Про литературу вообще проблем нету, зайди в магазин и тебя поразит разнообразие литературы.

    В какую сторону двигаться – сугубо твой выбор, если, конечно, не хочешь, чтобы кто-то все время делал его за тебя.

    >> В СНГ обучают как я понял только обобщенному программированию, а вот узким специализациям – нет…

    Что-то не совсем понятно, что имеешь ввиду. Но общие курсы ,- понятно, есть везде, в том числе в областях, которые ты перечислил. Если пойдешь в ВУЗ, то у тебя будет своя специализация, можешь развивать свою выбранную задачу.

  48. 6
    Евгений Гаврин ответил:

    Я бы на вашем месте почитал книги Шилдта по С/С++. Очень удобно написано.
    А начинать лушче всего с консольных приложений.
    //www.microsoft.com/express/ – вот вам бесплатная среда разработки – консольную прогу, для изучения основ в ней вы легко сбацаете.
    Если будет желание двинуться дальше
    //www.eclipse.org/downloads/ – очень хорошая среда разработки.
    gcc – тоже как вариант, но я с ним дела не имел.

    Из редкторов текста
    - Scite
    //scite.ruteam.ru/ – там про него написано – советую присмотреться.
    Notepad++
    //notepad-plus.sourceforge.net/ru/site.htm – ну это так, чисто поржать. Штука хорошая, но пользую редко.

    Еще хочу предостеречь от того, что бы начинать со средств визуальной разработки, типа боланда – та все легко и просто, но по началу, как сказал, Леонид – у вас бардак в голове будет.

    Перед тем как выбрать тем, какую специализацию выбрать – определитесь чего хотите вы сами.
    Узкая специализация в большинстве случаев преобретается на работе.

    Еще могу посоветовать походить на курсы за Майкрософтовскими сертификататми – при приеме на работу оказывают положительное влияние на работодателя.

  49. 5
    Павел Гаглоев ответил:

    Андрей <..::Gleam::..> Подкорытов, я думал разработчиком С++ был Бьерн Страуструп.

  50. 4
    Владимир Зевахин ответил:

    Андрей Подкорытов, автор вроде про плюсы ни слова не сказал.

  51. 3
    Леонид Максимов ответил:

    со своей стороны посоветую воспользоваться книжкой Кернигана и Ричи "Язык C". программировать можно хоть в блокноте, главное правильный компилятор. в качестве редактора советую vim, так как он легкий и простой, подсвечивает синтаксис, умеет форматировать код в соответствии с предпочтениями пользователя. для изучения собственно языка среда разработки, позволяющая мышкой рисовать формы, скорее вредна, так как создает бардак в голове. в качестве компилятора для окон многие рекомендуют gcc (в составе //bloodshed.net/devcpp.html).

  52. 2
    Валерий Волков ответил:

    Чтобы научиться что-то делать – нужно начать это делать!

  53. 1
    Андрей Подкорытов ответил:

    Привет Роман. Советую тебе для начала использовать Borland C++ Builder 6.0. Я сам с нее начинал и мне все было удобно и комфортно. Взять ее можно в магазине на диске. Если говорить о книгах то советую для начала прочиать книгу Максима Динмана "С++ освой напримерах", ну а потом взяться за подробное изучение главного козаря плюсов – ООП. Для этого лучше всего читать книги Герберта Шилдта, который является одним из разработчиков этого языка. А для серьезной работы тебе понадобиться знать не только Си но и различные системы вроде SQL, базы данных, сетевое программирование, да и платформу .NET потом не помешало бы изучить. Напоследок скажу – программируй, программируй, программируй… Удачи тебе!

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.