Pull to refresh

Comments 40

Хотелось бы увидеть какие-либо источники информации или что-либо аналогичное,
а то с некоторыми утверждениями в статье можно поспорить.
И статья, мне кажется, наполнена слишком уж базовыми вещами.
Поддерживаю.
К тому же совсем обделены вниманием интерпретируемые языки. Так же, если Автор уже вспомнил о фреймвроке Qt в вопросе о кроссплатформенности, то очень нехорошо было не упомянуть о нём в разделе о GUI.
Поправка про интерпретируемые языки: Автор не то что бы совсем их не упомянул, но это скорее похоже на фразу: «да, и такие бывают».
На то и был расчет — только базовые понятия, без подробностей. По поводу литературы я написал в постскриптуме — конкретного списка нет, статья писалась целиком и полностью из головы, а там она накапливалась долго и из многих источников :)
Какие именно утверждения спорные и почему?
А, например, вот это: «Скорость разработки программы. [...] Скорость выполнения программ, написанных на данных языках страдает, причем порой весьма ощутимо.»
Скорость разработки и скорость выполнения связаны далеко не напрямую. Никто не мешает программу, сделанную в RAD или на DSL (т.е., с очень высокой скоростью разработки), компилировать хоть в машинный код сразу.
Плюсану. Во время широкого расцвета Делфи сильно выигрывал на том, что делал через RAD, а потом результат декомпилил и доводил до вызовов API и ассемблера. Собиралась итоговая программа тем же компиляторов Делфи. Результаты были были весьма приемлемые как по скорости разработки, так и по результату.
Что-то маловато у вас там накопилось, как для статьи, ИМХО.
А когда же Хаскель выбирать? а на Питоне/Перле когда писать? А как, скажите, похаписты выбрали свой язык? Или JavaScript например? А как, например мне выбрать Лисп или Схему?
Следует глубже войти в изучаемую проблему, попробовать разные парадигмы, посмотреть разные продукты, написанные на тех или иных языках, лучше разобраться в преимуществах, истории языков. Короче, тема очень интересная, но и работы очень много.
1. Сначало стоит выбор платформы разработки — native Unix, native Windows, .Net, JVM В рамках одной платформы писать разные части на разных языках бычно не сложно
2. Не указаны предпочтения или требования заказчика. Например наши заказчики с виндами вообще не знакомы.
3. Очень важный критерий — с чем команда разработчиков знакома. Лучше писать для знакомых платформ, на знакомых языках.
4. Специфика разных областей применения — например для real time важнее всего скорость, для приложения на сердечном стимуляторе — надежность, для веб сайта — скорость разработки

Короче статья ни о чем. Очевидные вещи в ней есть а то, что узнаешь с опытом там отсутствует.
1. Выбор платформы так же может диктоваться и заказчиком, а может выбираться и по своим критериям, список которых зависит от проекта.
2. Это относится так же к выбору платформы.
3. Ну… мне казалось это совсем уж логичным и не требующем разъяснения.
4. Верно. Но на мой взгляд сначала составляются требования к программам (скорость, надежность и так далее), а потом по ним уже идет подбор других пунктов, как тот же язык программирования. А надежность как критерий языка довольно спорный, так как можно на надежном языке написать совершенно ненадежную программу.
Существует. Но это отчасти одна из тонкостей, которую можно выделить в отдельную статью, где можно провести рассмотрение языков, используемых в веб-программировании, а так же рассмотреть платформы и дать материал по настройке платформ-серверов.
Предвещая новые комментарии — статья и расчитана на совсем уж новичков. Все мы когда-то такими были. Когда я только начинал читать хабр 4 года назад я много чего не понимал, в т.ч. даже таких вещей, что описаны выше. Поэтому я решил начать с самых начал и сильно упрощенно.
Тут помимо новичков есть и образованные люди, и таковых будет больше. Так что жду от вас статьи уже для «образованных» людей.
Вот скажите, часто вам встречались новички, которые могут вот так свободно выбирать, на каком языке программирования делать программу?

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

Информация в статье либо приходит с опытом, либо в ней просто не нуждаются.
Извиняюсь, случайно отправил.
Я сам будучи новичком перед тем как начать что-то учить стоял на «перекрестке» — я примерно знал какого плана программы хочу писать, но не знал какой язык для этого лучше, и методом проб и ошибок искал приемлемый вариант для моих целей. На это ушло достаточно времени.

Да и данный сайт информационный, на нем нет шильдика «только для профессионалов!», сюда заходят люди самых разных категорий с самым разным уровнем. То, что большинство зарегистрированных пользователей профессионалы — может быть и так, спорить не буду, но кто скажет какие гости заходят на сайт? :)
Если бы новичок у меня спросил, какой язык нужно изучать, чтобы научиться программированию, то я бы безусловно посоветовал python. Этакий современный паскаль, который дальше можно применять на практике. Довольно ясный код, без всяких лишних служебных элементов, да и форматировать вложенный код отступами учит до автоматизма.

Из вашей статьи — ассемблер, фортран, упаси боже новичку такое советовать. Ощущение, что прочитал статью 10 летней давности из школьного учебника информатики.
Весьма вероятно, что я ошибаюсь, но, как мне кажется, чисто на ASM уже давно не пишут. Те же встроенные системы вроде бы обычно написаны на C/C++. А ASM используется внутри программ для критически важных мест (из того, что я видел — как правило, это была графика). Просто мне показалось, что как-то слишком ему много внимания уделили тут.

Я бы вообще грубо разделил на такие группы.
Высокая производительность: C/C++/Objective-C
GUI-приложения и веб-сервисы: C++/Java/C#
Интерпретируемые языки (веб и быстрая разработка): Python/PHP/Ruby
Как-то так.
Просто мне показалось, что как-то слишком ему много внимания уделили тут.

А вас это так задевает?
ASMу много внимания не бывает.
Между прочим, совсем недавно приходилось на нем писать работу с девайсом, на который под систему дров нет в природе.
Да, я понимаю, бывают специфические ситуации.
Просто я обратил внимание, что автор заметил, будто эта заметка рассчитана на начинающих программистов. И я очень сомневаюсь, что начинающему программисту нужен ASM. Хотя бы потому, что выучить язык с лексемой подобной любому естественному языку будет проще, на нем проще выражать свои мысли. Поэтому мне и показалось, что делать такой сильный акцент на нем тут просто не имеет смысла.

Забавно, кстати, получается — для новичка, как правило, вообще не стоит проблема выбора языка программирования, так как он в лучшем случае хорошо знает один язык :)
Согласен, ситуация комична: с выбором языка разбираются профессионалы. Новички как-то в сторонке.
Конечно, часто можно увидеть вопросы «Посоветуйте, какой язык начать изучать», но… Я справился с самостоятельным изучением только после того, как основательно укрепился в С++. Да и выбирать не приходилось — просто возникла мысль «Хочу знать Haskel».
Итог: статья типа «Выбор языка для новичков»(не конкретно эта) — она не для новичков =)
К слову о высокой производительности и скорости разработки.
Необходимо ввести понятие критериев краткосрочной и долговременной эффективности решения.
В случае достижения краткосрочной производительности действительно подойдут компилируемые языки с прямым (или междушажным) доступом до аппаратной части и низкоуровневых библиотек.

Что же касается планирования эффективности и производительности в долгосрочной перспективе, то здесь скорее выиграют те языки, которые из коробки дают возможность распределенных вычислений, балансировки нагрузки и прочие плюшки, включая (!) API доступ до низкоуровневых библиотек на системах, где они развернуты (например, Java/Scala). В этом случае скорость разработки возрастает, а вот разница в производительности по сравнению с программой на С++ в пределе временной шкалы приближается к нулю.

Автор начал красиво и правильно, но мне что-то подсказывает, что критериев должно быть на порядок больше, если уж мы тянемся до уровня хабра-статьи, а решение должно быть представлено в виде лепестковой диаграммы.
Flash, java все в кучу. Чаще язык программирования не выбирают, он навязывается совокупностью задача + платформа.
Либо задача + совокупность платформ в случае кроссплатформенной разработки, если использование данного подхода допустимо для решения задачи.
Кажется забыли один из самых важный параметров — знакомство комманды с инструментом/языком. Часто бывает, что конкретной задаче в теории отличо подходит domain-specific language, но на практике обычно выбирается то, с чем лучше знакома команда разработчиков, и это обычно языкы общего назначения. Иногда изучения нового языка под конкретную задачу окупается, но это скорее исключение из правила.
Это само собой. Если нет желания/возможности изучать новый язык то проблема выбора языка отпадает сама собой.
Это для программистов таджиков топик? Выбора такая выбора
Как-то поверхностно написано. Хотя для учебника по информатике для класса этак 10 наверно самый раз.
Язык програмирования — Flash?
В общем, первый блин комом, но недоработки учту. Вопрос к хабрасообществу: переделывать ли данную статью согласно комментариям, либо оставить её как есть? Дело в том, что данная статья в принципе основана на новичков, так как люди, уже профессионально занимающиеся программированием в состоянии сами проанализировать имеющиеся языки и сделать нужный выбор, либо вообще не делать выбор и писать на том языке, что уже знают. Делать просто сравнительный анализ языков или сгруппировать их по сферам применения я считаю бессмысленно — по указанной мной ссылке весьма информативная таблица с перечислением возможностей языков.
Боюсь, что задача выбора языка на котором писать вообще стоит не очень часто.

Чаще всего (если задача реальная, а не для обучения) совокупность требований, навыков команды, надобности интеграции и т.д.

Так что — найдите лучше другую тему
Тут вот какой прикол. Писать лучше то, с чем ты знаком.

Тоесть, твою мать, надо сесть и наклепать пару проектиков с нуля, тогда у тебя появится ОПЫТ. А ОПЫТ, который в некоторых проектах рифмуется со словом ЖОПА, подсказывает тебе, что иногда очень даже можно брать старый сайт на JSP и дёргать его интернет-эксплорером, после этого оборачивать вызовы в DCOM и посылать на удалённое C++ приложение. Такое тоже видели.

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

Но сами по себе наблюдения не дают ничего, кроме данных.

А данные, мать вашу так, тру-ля-ля, надо оценивать! Для этого тебе и дан твой IQ. Если данные не оценивать — получишь Биологию. В ней есть куча интересной информации о разных кракозябрах, но никто толком понять не может, откуда это взялось и как появилось.

А как данные оценить? Поработать с ними, выкинуть то, что не работает, запомнить то, что работает, получить пару шишек (Ибо профессор Кнут говорил, что так нельзя, но оказывается, у русских программеров есть исключения).

Ключевой момент вот в чём — ответь на грёбаный вопрос: "Это работает для тебя?"

Я видел программу, написанную на языке PROGRESS. Я видел программы, которые используют COM порт как сетевое соединение. Я видел это в 2012 году. И…

Оно работало.

Поэтому, хватит тут разглагольствовать на тему того, что надо переделывать или что не надо переделывать. Пойди — попробуй сам, пострадай, попотей, пополивай кровью — но СДЕЛАЙ. А потом — напиши об этом. И расскажи как ты делал. Вот такие штуки ценятся
Приведу простую аналогию: на работу можно ехать на «легковушке», а можно и на асфальтоукладочном катке. Результат будет один и тот же — мы на доехали на работу. Работает? Конечно! Вот так и тут, мать вашу так :) Только в сфере кодинга такие вещи более уместны на хабе «ненормальное программирование» ;)

>Ключевой момент вот в чём — ответь на грёбаный вопрос: «Это работает для тебя?»
То, что описано в статье — да. Я не пытаюсь кодить в определенной области не предназначенным для этого языком.
Поддерживаю Nurked`а.
Часто говорят: «Выбирайте язык под задачу». Но это, по-моему, тоже туфа. Я обычно сталкивался с этой проблемой в следующем контексте:
Я знаю, что смогу решить эту задачу на своем любимом языке «Таракан Кукарача», хотя это и будет сложно. А дядя Петя-алкоголик твердит, что для подобных задач был разработан язык «Крошка Молли», и на нем эту задачу решить куда проще. И выбор «Знаю, но сложно vs Не знаю, но просто» в случае необходимости показать результат как можно скорее делался не в пользу бедной овечки.
Хорошо когда делаешь что-то исключительно для себя, и выбор расширяется до «Знаю, но сложно vs Не знаю, но просто vs не знаю и сложно», иногда очень хочется и последний вариант :}
Обычно третий вариант прикрывает дядя в костюме со словами «И сделай к понедельнику!» :)
Еще Козьма Прутков говорил, что нельзя объять необъятное. Но, вы все-таки решились, не имея соответствующего бэкграунда написать пост из серии «Все обо всем». В итоге получилось из серии «Собрание расхожих стереотипов и заблуждений о программировании».

Верните мне мои 10 минут.
C# кроссплатформенный? Идея то изначально была такой, но фактически работает только под виндой
Sign up to leave a comment.

Articles