Обсуждаем языки программирования

Discussion in 'Машинное отделение' started by WinPooh, 10 Jul 2006.

  1. WinPooh
    Оффлайн

    WinPooh В.М. Staff Member

    Репутация:
    95
    Не сгинул. До сих пор существуют унаследованные бизнес-приложения. И специалисты по Коболу, способные их поддерживать, весьма ценятся. Потому что их очень мало :)

    Интересно, есть ли шахматные программы на Коболе?

    А C++ хоронили уже столько раз, что у него иммунитет выработался :)
    И вообще, "пусть расцветают сто цветов", как говорил лучший друг всех китайских программистов.
     
  2. akupr
    Оффлайн

    akupr Новичок

    Репутация:
    0
    Знаете ли, программирование вообще штука довольно опасная для мозга :)
    Так что это не аргумент.

    Меняются времена, меняются задачи и инструменты для их решения.
    Может, конечно и C++ сгинет. Но на мой век задач для C++ хватит :)
     
  3. krey
    Оффлайн

    krey Михаил Кройтор Staff Member Команда форума

    Репутация:
    1
    знаете я не склонен верить этой статье :) она больше похожа на крутой развод :) но насчет G++ там написана правда. Простейшая программа, использующая хотя бы 1 cin пухнет до полметра. однако, если взять другой компиллятор - та же программа компиллируется до 17 кб.

    добавлено: даешь fltk вместо MFC!
     
  4. atoku
    Оффлайн

    atoku Модератор

    Репутация:
    0
    А вы все же усомнитесь... И вам откроется удивительный мир.

    А на счет "задач хватит". Надеюсь, что не хватит и все те, кто ленился узнавать что-то новое, развиваться, а продолжал долбить С++ и всю белиберду типа MFC, не смогут уже заниматься разводом людей на бабки и тупо кодить.
     
  5. WinPooh
    Оффлайн

    WinPooh В.М. Staff Member

    Репутация:
    95
    Да, статейка явно фейковая. Но прикольная :)
     
  6. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    Прикольно...
    Я например писал на всем на чем только можно, и могу сказать что разницы на чем писать нет никакой.
    Бывает только нехватка функцианала, проблемы с быстродействием, и кривые руки, которые в состоянии сделать нечитабельный (и тяжелый в поддержке и сопровождении) текст на ЛЮБОМ языке.
    Насчет цифр - 80$ в час. Сложность языка тут не при чем :)
    И программист... не кодер, а проф. программист способен поднимать такую сумму даже в Питере (и от языка ничего не зависит), не говоря уже о штатах.
     
  7. atoku
    Оффлайн

    atoku Модератор

    Репутация:
    0
    Да, ребята, я тут еще цитат накопал от лучших программеров. Но все они с матом, и все о том какое С++ ужоснах. :)

    Между прочим, Столлмен тоже был очень против С++, его труп Страуса не смог обмануть :p А меня в свое время смог :/

    Все нужное Бог сделал простым, а все сложное ненужным :)
     
  8. atoku
    Оффлайн

    atoku Модератор

    Репутация:
    0
    Вот цитата с которой я почти полностью согласен, включая мой богатый опыт интенсивного программирования на С++. Это нек-то Rock пишет, один линуксовый хакер. Так что это не мои слова, если что не так ;)

    Язык C прост. Как 3 копейки. Первый компилятор был объёмом 20КБ. Соответственно, простой язык, простой (сейчас уже только относительно) компилятор - меньше ошибок, более качественная оптимизация.
    Я как-то читал историю одного кренделя (сейчас уже не вспомню чью и где), который участвовал (как один из основных разработчиков) в написании компилятора C++. Стандартом на C++ убить можно, если по голове стукнуть, соответственно, в нём куча разночтений, которые естественно, по закону Мерфи, читаются всеми возможными способами, что приводит к несовместимостям или необходимости помнить "zillions" подводных камней при написании портабельных прог. Кроме того, частенько вылазят противоречия в стандарте, которые непонятно как разрешать и, соответственно, разрешаются кому как бог на душу положил, что тоже не улучшает ситуации с совместимостью.


    Язык раздут до невозможности, так что оптимизация становится, мягко говоря, нетривиальной задачей, а грубо - полный <beep>. Соответственно, оптимизирующий код громоздок, сложен и, как следствие, глючит постоянно. Хорошо, если ещё на этапе компиляции какой-нить "internal error", а то будешь целый день искать глюк в своём коде, пока до дизассемблирования не доберёшься, а там - мать моя женщина!

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

    Я допускаю, что C++ может быть хорош в каких-то областях, но сам предпочитаю методику "glue language". Из языков - Python. Все задачи, которые решались когда-то мной на C++, очень хорошо и красиво решаются этим способом. Хотя и это, естественно, не панацея.

    P.S. В написании этого сообщения использовался собственный опыт разработок, а не просто чьи-то статейки. Поэтому список недостатков ограничивается лишь теми, с которыми пришлось столкнуться мне самому.
     
  9. atoku
    Оффлайн

    atoku Модератор

    Репутация:
    0
    Да, а вот Python - это совсем иное дело. Я тоже независимо от многих пришел к той же самой концепции!
     
  10. atoku
    Оффлайн

    atoku Модератор

    Репутация:
    0
    Нашел свои выступления от 2003 года, где я защищаю С++ от нападок этих самых хакеров! Хэй! Ву-а-ля! Надо же как интересно...
     
  11. krey
    Оффлайн

    krey Михаил Кройтор Staff Member Команда форума

    Репутация:
    1
    а на что питон похож? спрашиваю о впечатлении.
     
  12. atoku
    Оффлайн

    atoku Модератор

    Репутация:
    0
    Нашел слова одного из самых уважаемых российских прогрммистов из Германии...

    svu:

    Ух. Заявление прямо-таки программное!
    1. Я не помню, говорил ли кто-нибудь тут про устаревание С++. Я утверждал только, что он по ряду причин плох (и не говорил, что он был хорош в момент рождения). Причины - во многих случаях низкая эффективность, провоцирование ошибок. Причем проблема в том, что да, можно написать хороший и эффективный код на С++. Можно даже написать хороший ОО код на С++. Но это совсем непросто. И знаете почему? Этот язык _провоцирует_ на написание кода, который сложно поддерживать - и на написание медленного кода. Тут на ЛОР потребовался ДЕНЬ, чтобы понять, почему Hello World на С++ на порядки медленнее. Да, можно сказать - тут все чайники, ничего не знают. Но я думаю, дело не только в этом. Далее, про провоцирование ошибок. Переопределение операторов, конструкторы копирования - все это страшные силы, направленные _против_ разработчика. А как реализована рефлексия? А такой механизм, как exceptions? Скорость, понятное дело, идет побоку... А ведь люди думают - раз С++, то будет быстро. И давай лепить typeof...


    2. Подумать головой - это прекрасно - это для любого языка полезно.

    3. Ваши ... физиологические трудности от API гнома - это следствие Вашего личного опыта, системы ценностей и пр. Т.е. явление глубоко индивидуальное. На самом деле, и гномовские, и винюковские, и обычные иксовые API - нормальное применение ОО-подхода для не ОО-языка. И не надо жалеть тех, кто их использует - нам не так уж и плохо:) Вы действительно верите, что люди начали писать гном на С от незнания С++? Тот же вопрос про win32, про OpenGL (правда, его API не очень ОО) и пр. C-based ОО API (которых, халва аллаху, сегодня на порядки больше, чем API на С++).

    Человечество выработало некий стандарт де-факто на публичные API. И этот стандарт - С. Чтобы имена были простыми (а не замангленными до неузнаваемости). Чтобы не пришлось думать, как транслировать семантику exceptions в языки, в которых их нет.

    Большие, сложные приложения с красивым интерфейсом для конечного пользователя - прекрасная ниша для С++. А системные, платформообразующие модули должны бы иметь API в терминах С (разумеется, это не исключает bindings в другие языки). Это мое ИМХО, конечно. И, опять же ИМХО, С++ слишком гибок и слишком мощен. Чтобы обуздать мощь этого мустанга, нужно очень хорошо знать его повадки - и на каких местах он может отлягать...
     
  13. atoku
    Оффлайн

    atoku Модератор

    Репутация:
    0
    Python это мощный скриптовый язык с двумерной семантикой (значимость отступов) с огромным набором библиотек и ограниченными возможностями функционального программирования (list comprehensions, lambda, recursion, map, filter ...). Приложения могут запускаться в любой операционной системе (в этом смысле противопоставляется java, но идет в другом направлении в смысле идей программирования). Содержит средства ООП. Очень легок в освоении. Но грамотное использование связано с уровнем образования в Computer Science.

    Он очень удобен для написания гуев, скриптов, веб систем, прототипов систем, продвигается как связующий клей для проектов и многое другое. Имеет отличную связь с другими языками, особенно с С.

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

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

    Очень важно сразу стараться писать переносимый код, использовать правильные библиотеки и так далее.
     
  14. WinPooh
    Оффлайн

    WinPooh В.М. Staff Member

    Репутация:
    95
    Ага, следующим шагом должно быть требование набирать текст программы фонтом фиксированного размера и начертания. Или даже так - для каждой управляющей конструкции свой фонт, иначе чтобы не компилялось :)
     
  15. atoku
    Оффлайн

    atoku Модератор

    Репутация:
    0
  16. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    Я знаю с чего началась вся эта глупость.
    Бывают бредовые языки, которые различают Заглавные и прописные буквы.... :D
     
  17. WinPooh
    Оффлайн

    WinPooh В.М. Staff Member

    Репутация:
    95
    Это ещё в Фортране было - там с восьмой позиции, кажется, надо было текст писать, от перфокарт пошло...
    Доводилось как-то читать про минималистский язык, в котором два значащих символа: ПРОБЕЛ и ТАБУЛЯЦИЯ :)

    А вот ещё один супер-язык: http://en.wikipedia.org/wiki/Brainfuck
     
  18. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    Это не то. Когда два пробела подряд несут смысловую нагрузку отличную от одного пробела (ну либо различаются пробел и табуляция) - Это уже прикольней. А обязательный отступ это из другой оперы.
     
  19. bankuss
    Оффлайн

    bankuss Александр баннер

    Репутация:
    6
    дааа если в С++ с головой окунаться то можно надолго утонуть :)
    для шахмат там много лишнего, но ведь его изучать никто не заставляет.
    но альтернатива какая? что предложите? в любом случае нужен быстрый код...а самый быстрый у С\С++ (ассемблер не в счет).
     
  20. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    Некоторые пишут движки на Асме.
    Сильнейшие движки (например Фриц)
     
  21. bankuss
    Оффлайн

    bankuss Александр баннер

    Репутация:
    6
    NS согласен, но там над ним человек 5 колдует :) а мы одиночки
     
  22. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    Над ДВИЖКОМ Fritz колдует один человек :)
     
  23. bankuss
    Оффлайн

    bankuss Александр баннер

    Репутация:
    6
    NS Франц Морш что-ли? не думаю чтобы он сам все делал, помощники точно есть, только они в тени его имени :)
     
  24. WinPooh
    Оффлайн

    WinPooh В.М. Staff Member

    Репутация:
    95
    Да ладно, языки не самая критическая часть.
    Уверен, если алгоритмы Райлиха реализовать на VB, то слабее Греки программа играть всё равно не будет...
     
  25. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    Слабее Фрукта 2.1 играть не будет :)
    Нет никого там в тени, разве что тестеры. Но на самом деле тестеры и у нас у всех есть.
    Есно оболочка и Дебютные библиотеки это не движок.
     
  26. bankuss
    Оффлайн

    bankuss Александр баннер

    Репутация:
    6
    WinPooh реализовать на VB наврядли выйдет :)
     
  27. akupr
    Оффлайн

    akupr Новичок

    Репутация:
    0
    Просьба не считать меня ленивым :)
    Новое для меня всегда интересно. И не думайте, что я знаю и использую только C++.
    А MFC к C++ не имеет никакого отношения, не надо передергивать :)
    Есть более другие библиотеки для написания интерфейса на C++.
    Посмотрите хотя бы на Qt.

    Статья Ваша несколько запоздала с датой. Ее бы 1-го апреля запостить :)

    Если это те самые обещанные "материалы", развенчивающие C++ в пух и прах, то я умываю руки.
     
  28. WinPooh
    Оффлайн

    WinPooh В.М. Staff Member

    Репутация:
    95
    Кстати, atoku, давно хотел спросить. Как программисты на чистом C поступают, если им необходимо реализовать, скажем, двоичное дерево или даже просто стек? Неужели каждый раз руками с нуля кодируют, или есть какие-то более-менее стандартные библиотеки, а-ля STL?
     
  29. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    Зачем библиотека чтоб сделать стек? Стек это просто массив/область памяти и не более того (математический стек)
    Двоичное дерево - AVL - это сотня строк кода, три процедуры (найти, добавить, удалить) - Зачем нужна компонента?
     
  30. krey
    Оффлайн

    krey Михаил Кройтор Staff Member Команда форума

    Репутация:
    1
    надо :) я вот, например, благодарен stl. и не только за стек. а, хотя бы, за тот же тип string
     
  31. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    Под Винду писать надо, и никаких проблем не будет :)
     
  32. Guest
    Оффлайн

    Guest

    Репутация:
    0
    Господа, а Visual Age C++ хороший компилятор?
     
  33. atoku
    Оффлайн

    atoku Модератор

    Репутация:
    0
    Есть свободные библиотеки. Неужели все самому писать. Это других не уважать! :) Все давно написано и выложено в общее пользование. Надо лишь поискать. Например здесь

    http://www.thefreecountry.com/sourcecode/cpp.shtml

    или здесь

    http://freshmeat.net
     
  34. atoku
    Оффлайн

    atoku Модератор

    Репутация:
    0
  35. WinPooh
    Оффлайн

    WinPooh В.М. Staff Member

    Репутация:
    95
    При наличии нормальной библиотеки, дерево - это одна строка кода: tree<Foo>.
    Согласись, что выигрыш в сто раз чего-нибудь да стоит.

    Компонента нужна также для читаемости кода другими программистами. Если каждый из нас напишет свою реализацию стека, отличающуюся от других мелкими деталями реализации и интерфейса, мир сломается.

    Да что я тут азбучные истины объясняю :)