Koshachii писало: Ну, не взлетели они. Может когда-то в будущем они будут на коне, а сейчас это только игрушка для гиков.
Ну вот по Haskell на SO вопросов больше чем по Netbeans (одна из самых популярных IDE), если уж так мерять. Это ты называешь "не взлетели"?
Для обычных людей это весьма утомительное хобби, отнимающее кучу времени, и то лучше выбирать мейнстримовые языки по многим причинам, тот же php/js.
По каким же? Даже если писать для веба — есть Elm — функциональный язык, который компилируется в JavaScript. Учить сам JS — это как предлагать писать сразу на машинном коде вместо C. Можно, конечно, и даже полезно его знать, но постоянно на нём писать ты не будешь.
А серверную часть можно делать на Haskell или OCaml, а не заморачиваться с кривым недоязыком без дизайна.
но начинающему надо начинать с одного языка и английского, которые не менее важен.
И какого же? Почему бы, например, не фортрана?
Зачем новичку, у которого сложности c бейсиком, стока страшных слов?!
Потому что это кривой микрософтовский бейсик, а там сложности могут возникать на ровном месте, нет?
Нужно взять нормальный язык и редактор. Если ты настаиваешь на популярном языке, почему не Haskell? По нему дофига обучающей литературы даже на русском. В рамках монады IO можно даже императивно программировать и синтаксис мало отличается от обычных императивных языков.
Wise Dragon писал: на популярном языке, почему не Haskell?
Ты в какой-то другой параллельной вселенной живешь с единорогами. :wizz:
Запрос на hh.ru по Haskell дает 0 вакансий, moster.com по US (лидер в мировом ИТ) - 16 вакансий, где есть упоминание о Haskell. Зашибись популярный. :d
Мяф в свое время ушел с перла на питон для мелких скриптов не в последнюю очередь из-за синтаксиса перла, читаю описание на лурке:
"Язык Haskell известен благодаря синтаксису, в сравнении с которым пёрл выглядит псевдокодом, а также необходимостью глубокого понимания лямбда-исчисления, замыканий, теории графов, теории категорий, сопромата, анатомии мозга и прочего матана даже для вывода на экран строки «Hello, World!» "
Страшная вещь этот ваш Haskell! :razz:
Учить сам JS — это как предлагать писать сразу на машинном коде вместо
Эстеты используют Coffeescript.
по Haskell на SO вопросов больше чем по Netbeans (одна из самых популярных IDE),
Вопросов по языку программирования больше, чем по одной из IDE. Разве, в принципе, могло бы быть наоборот?! :o
А серверную часть можно делать на Haskell или OCaml, а не заморачиваться с кривым недоязыком без дизайна.
Чем он лучше Elm? По нему даже базовая обучалка для не-программистов есть, правда на английском.
даже для вывода на экран строки «Hello, World!»
main = putStrLn "Hello, World!"
Koshachii писало: Мяф в свое время ушел с перла на питон для мелких скриптов не в последнюю очередь из-за синтаксиса перла,
У Haskell как раз синтаксис ближе к питону. Даже значимые отступы есть.
Кстати, что конкретно в синтаксисе перла тебе не нравится? И да, использовал бы use strict;
moster.com
Ввёл Python, получил No results
Речь идёт о языке для начального изучения, а не о том, с каким ты пойдёшь устраиваться на работу.
Как вы все не можете понять, что это разные вещи? Программистом ты не станешь от написания хелловордов, а для чего-то большего надо иметь кругозор, которого у тебя не будет если ты замкнёшься в рамках какой-нибудь там джавы или шарпа, не желая видеть ничего другого.
Хочешь научиться программировать нормально — изучи хоть один нормальный высокоуровневый язык (уровня не меньше лиспа или хаскеля), разберись как работает компьютер на уровне машинного кода (изучи хоть один ассемблер, хоть для МК, хоть для DOS, хоть для Linux), изучи теорию алгоритмов — лямбда-исчисление, недесятичные системы счисления, комбинаторы, булеву алгебру, теорию вычислимости (что такое задача останова, классы сложности алгоритмов — const, P, NP и тд).
Без базовой теории можно стать только быдлокодером, но не программистом. А зная всё это — можно уже писать инкрементально более сложные программы и накапливать опыт и изучая параллельно другие языки.
Отступы это самое мяф раздражающее, что есть в питоне. В Перле частая ситуация, когда сам написал, оно работает, но уже через год ты можешь не понять быстро, как оно работает. Очень запутанный синтаксис.
это разные вещи
Чтобы не терять зря время лучше учить язык сразу тот, с которым можешь пойти работать.
разберись как работает компьютер на уровне машинного кода (изучи хоть один ассемблер
Чтобы написать свою операционку или игровой движок? Если целить на системное программирование, то да. Иначе хватит пару ознакомительных статей. Ассемблер для этого не нужен.
Без базовой теории можно стать только быдлокодером, но не программистом
Лучше начинать быдлокодером, чем оставаться вечным студентом без опыта работы.
Koshachii писало: Чтобы написать свою операционку или игровой движок?
Чтоб принципы работы компьютера не были для тебя чёрной магией.
Koshachii писало: Отступы это самое мяф раздражающее, что есть в питоне.
А мне понравилось. Когда не нужно писать скобочек — это очень удобно, и код получается короче и более читаемым. Хотя Tcl всё равно мне больше нравися в целом.
Koshachii писало: но уже через год ты можешь не понять быстро, как оно работает.
А ты используй use strict; use warnings; оформляй отступы аккуратно и комментируй каждое нетривиальное действие.
Koshachii писало: Чтобы не терять зря время лучше учить язык сразу тот, с которым можешь пойти работать.
Если воспринимать программирование как унылую обязанность, но за которую платят деньги — может быть.
А если как род искусств — нет. Язык должен быть в первую очередь красивым и изящным, чтоб можно было восхищаться его непередаваемой красотой и мощью и это давало мотивацию к самосовершенствованию.
А если язык — унылое нагромождение энтерпрайзных штампов и легаси — ну художник конечно может нацарапать шедевр и гвоздём. Но это же не повод предлагать художнику начинать обучение с покраски забора?
Koshachii, да ладно, что изменилось принципиально-то? Залатали пару маразмов, прикрутили пару прикольных фич, но принципиально ничего не изменилось.
Все основные претензии: система типов, операторы, именование функций, порядок аргументов, обработка ошибок, ломающие код ссылки — не будут исправлены никогда.
Раньше код (new A)->a() падал с синтаксической ошибкой, теперь поддерживается. Но "исправили" разрабы именно этот частный случай, а не весь синтаксис, то есть сложные выражения как не поддерживались так и не поддерживаются.
Родили пространства имён, но сделали это с упоротым синтаксисом и упоротым поведением, которое сводится по сути к include через анус.
Родили yield, но с совершенно упоротым синтаксисом, где от наличия скобок зависит результат.
Синтаксис лямбд, именованные параметры и многое другое послали в анус как "не нужно".
Я не вижу, что этот язык исправляется.
Ну, не взлетели они. Может когда-то в будущем они будут на коне, а сейчас это только игрушка для гиков.
Функциональные языки взлетели тем, что самые вкусные их фичи копируются в императивные языки. В каком-то смысле успех. :)
[Добавлено 11.01.2014 14:42:15]:
Ну вот по Haskell на SO вопросов больше чем по Netbeans (одна из самых популярных IDE), если уж так мерять. Это ты называешь "не взлетели"?
Wise Dragon, хочешь научу доказывать популярность абсолютно любого языка? Сравнивай с saas — всего каких-то жалких 476 вопросов. А ведь жутко попуялрная вещь! Ещё можно с antialiasing сравнивать. Если язык ну уж совсем редкий, а доказать популярность нужно, то бери сразу conio — обойти 29 вопросов не составит труда.
Даже если писать для веба — есть Elm — функциональный язык, который компилируется в JavaScript.
У языков, компилирующихся в JS, есть существенный недостаток — весёлая отладка.
Так-то использовать альтернативы JS можно, но ты всё время забываешь, что программисты не живут в вакууме, и код нужно будет кому-то другому поддерживать и дорабатывать. Если ты как заказчик найдёшь психа, который согласен изучить новый язык (а знающих Elm немногим более нуля) для доработки старого проекта, то стоить это удовольствие будет дорого.
А серверную часть можно делать на Haskell или OCaml, а не заморачиваться с кривым недоязыком без дизайна.
То есть новичкам ты предлагаешь писать веб-сайты на Haskell, я правильно тебя понял? f:>
По нему дофига обучающей литературы даже на русском.
Фишка в том, что для популярных языков литература без "даже", и есть выбор.
fib n = case n of 0 -> 0 1 -> 1 _ -> fib (n - 1) + fib (n - 2)
Wise Dragon, хаскель настолько умный, что сможет раскрутить эту рекурсию, или всё-таки это образцово-показательный пример как неправильно вычислять ряд Фибоначчи?
У Ruby тоже есть интерактивная веб-консоль, но она гораздо тормознее.
Аthаri, это не Haskell, а Elm же. Кстати, его компилятор написан на хаскеле, так что вот тебе пример, что функциональные языки годны не только для числодробилок.
Это же не хвостовая рекурсия. Подозреваю, что не может, но надо проверять. Не забывай, что я начал изучать этот язык только сегодня.
Аthаri, а ты калькулятор до сих пор не показал. Готов сдаться и признать, что GUI-приложения лучше делать на Tcl/Tk, чем на C#?
Кстати, если у приложения много форм — так и создавай каждую в отдельной функции, тогда из REPL можно вызвать любую и посмотреть, но при этом не теряется гибкость и ты можешь при желании какие-то делать в редакторе форм, какие-то кодом. Хотя проще прямо кодом, если в расположении кнопок есть какая-то закономерность — это всё-таки не XAML.
Калькулятор отображает число в соответствии с настройками языка в системе (только минус исправляет на правильный символ). Кнопка дробной части также отображает правильный разделитель ("," в русской локали, "." в английской). Ну и на всех кнопках правильные типографские символы.
$ mcs athari.calc.orig.cs athari.calc.orig.cs(2,14): error CS0234: The type or namespace name `Drawing' does not exist in the namespace `System'. Are you missing an assembly reference? athari.calc.orig.cs(5,14): error CS0234: The type or namespace name `Windows' does not exist in the namespace `System'. Are you missing an assembly reference? athari.calc.orig.cs(15,9): error CS0246: The type or namespace name `Label' could not be found. Are you missing a using directive or an assembly reference? Compilation failed: 3 error(s), 0 warnings
Аthаri, нажимаю 6 ÷ 9 =, получаю 0, Что я делаю не так? Кроме того, при нажатии на знак действия старое число стирается сразу, а не когда начинаешь набирать новое число. Ну и 2 + 4 = = не работает вообще, а у меня хоть и не так как на нормальных калькуляторах, но всё-таки работает.
Да, оказывается нужны были ключи -r:System.Drawing -r:System.Windows.Forms и доустановить libmono-winforms2.0-cil или libmono-winforms2.0-cil
Выглядит кстати криво — кнопки без стилей, квадратные. Почему нельзя было использовать Gtk# вместо Windows.Forms?
Есть ActiveTcl, но там исходные коды закрыты (BSD-подобная лицензия Tcl это разрешает и, к сожалению, находятся те, кто этим пользуется), есть Freewrap который может ещё и обёртывать скрипт в exe-файл, но у меня он как-то криво работал с консолью, или я что-то делал не так. Может и ещё какие-то есть, но это надо искать.
Ты мне тут с пеной у рта доказывал, что нужно писать кроссплатформенно, а юзеры как-нибудь сами отдебажат на любимой оси. Дерзай, чо.
Кроме того, при нажатии на знак действия старое число стирается сразу, а не когда начинаешь набирать новое число. Ну и 2 + 4 = = не работает вообще, а у меня хоть и не так как на нормальных калькуляторах, но всё-таки работает.
Ты ж сказал не париться с эмуляцией обычного калькулятора. Ну я и реализовал так, как мне удобно. Какая спецификация — такой результат.
Выглядит кстати криво — кнопки без стилей, квадратные.
Есть ActiveTcl, но там исходные коды закрыты (BSD-подобная лицензия Tcl это разрешает и, к сожалению, находятся те, кто этим пользуется), есть Freewrap который может ещё и обёртывать скрипт в exe-файл, но у меня он как-то криво работал с консолью, или я что-то делал не так. Может и ещё какие-то есть, но это надо искать.
facepalm.jpg
Wise Dragon, нет, серьёзно? То есть я даже протестировать твой скрипт нормально не могу?
Аthаri, наоборот Gtk# есть по дефолту, а Windows.Forms — лишняя зависимость, которую надо устанавливать.
Поясняю: я пишу под винду. Всегда. И пример кода на шарпе, разумеется, тоже будет виндовый, с характерными для винды библиотеками, потому что это основая платформа.
Кроме того, это наглядная демонстрация провальности идеи абсолютно кросс-платформенного кода. Правильная кросс-платформенность — это использование специфических для оси библиотек, в данном случае гуёвых. Под виндой приложение должно использовать WPF или WinForms, под линуксом — Gtk и что там ещё есть. Иначе будет кривота, которую ты сейчас наблюдаешь.
Аthаri писал: И пример кода на шарпе, разумеется, тоже будет виндовый, с характерными для винды библиотеками, потому что это основая платформа.
А если я буду постить примеры кода, которые только на линуксе работают и говорить, что так и надо?
Лучше использовать Qt или Tk.
И тестировать надо на всех ОС, просто если уж прямо нет возможности это сделать — всё равно платформоспецифичный код надо так или иначе изолировать и использовать только в крайних случаях — чтоб если кто-то это будет делать, ему было проще.
И вообще, это из-за таких как ты винда до сих пор и не вымерла — единственные преимущества, кроме троллинга — это наличие каких-то специфических приложений.
Аthаri, калькулятор можешь. Вот чисто консольное почему-то работало как-то не так. Или я что-то не так делал.
Wise Dragon, какой-то звиздец, а не калькулятор. И мне ещё тычут в морду отсутствием фич обычного калькулятора...
Начнём с того, что freewrap не одолел UTF8, поэтому я лицезрею крякозябры. Размер окошка можно изменять, и при разворачивании на весь экран оно принимает ужасающий вид. Кнопки стилизованные, хоть на этом спасибо.
9 + 8 =
17.0
Откуда ".0"?
9 + 8 = =
34.0
И ко мне ещё претензии? У меня было похожее укуренное поведение, мне хотя бы хватило совести его отключить, чтобы не вводить юзера в ступор.
9 * + -
162.0
Серьёзно?
±
-0
Да ладно?
0 / =
Приложение таинственно исчезло.
± 9 9
9
Чего-то не хватает...
± 6 6
-066
Чем это пахнет?
± 6 6 + 0
-54.0
Ага, восьмеричная, она родненькая.
√
0.0
√
0
Нули бывают разные...
[Добавлено 13.01.2014 01:57:23]:
Вот скриншот этого чуда. Да-да, оно запускается с нефокусированным окном.
[Добавлено 13.01.2014 02:05:14]:
А если я буду постить примеры кода, которые только на линуксе работают и говорить, что так и надо?
Wise Dragon, ты и запостил, собственно. У тебя кросс-платформенность абсолютно такая же, как у меня. Формально запускается, но работает через анус.
И вообще, это из-за таких как ты винда до сих пор и не вымерла — единственные преимущества, кроме троллинга — это наличие каких-то специфических приложений.
Всего-то взять и портировать весь созданный за десятилетия софт на другую ось — и сразу вендекапец. Сущая мелочь, ага.