Очередная войнушка на тему "твой язык программирования сосет больше, чем мой язык программирования" у
avva навела меня на мысль. Я подумал - какой язык программирования мне стоило бы выучить и зачем? Т.е. языков программирования наплодили столько, что пора уже им заиметь своего Линнея и Дарвина, и выпускать определитель видов и открывать факультеты по изучению их генезиса и повадок. Кстати, неужели мне первому в голову пришла эта мысль? Не поверю, где-то это уже должно быть. Но я отклонился от темы.
Итак, я знаю следующие языки (в произвольном порядке): C, C++, Java, Prolog, Perl, PHP, Javascript, Tcl, Visual Basic в различных его изводах, Pascal. "Знаю" здесь надо толковать очень широко - т.е. мои знания, скажем, в Прологе гораздо хуже, и гораздо ржавее, моих знаний C, но концепции языка я знаю, и если бы понадобилось, думаю, смог бы продуктивно работать на нем после некоторого подновления знаний. Lisp/Scheme я встречал, однако в список внести не могу, поскольку ничего толком на нем не писал, и не уверен, что смог бы без серьезного вложения времени - а это, практически, то же самое, что учить язык заново.
Теперь вопрос - существует ли язык, который мне стоило бы выучить для практических целей? Т.е. если бы я, скажем, не знал Перла, то мне бы стоило выучить его или, скажем, Питон или PHP - потому что, скажем, писать ad-hoc программки для обработки информации в различных форматах на них удобнее, чем на C или Яве. Мне так кажется. А если бы я не знал C, то мне стоило бы его выучить, чтобы писать более эффективные программы или пользоваться тысячами готовых библиотек, у которых есть интерфейс с C.
Т.е. мне интересно, какой язык, который, если я его выучу, позволить мне решать гораздо более эффективно некоторый класс задач - при этом класс достаточно часто встречающийся, чтобы имело смысл заниматься этим заранее (т.е. если какой-то язык позволяет жутко эффективно программировать ядерные реакторы, то это непрактично - буду работать с реакторами, тогда и выучу).
Итак, я знаю следующие языки (в произвольном порядке): C, C++, Java, Prolog, Perl, PHP, Javascript, Tcl, Visual Basic в различных его изводах, Pascal. "Знаю" здесь надо толковать очень широко - т.е. мои знания, скажем, в Прологе гораздо хуже, и гораздо ржавее, моих знаний C, но концепции языка я знаю, и если бы понадобилось, думаю, смог бы продуктивно работать на нем после некоторого подновления знаний. Lisp/Scheme я встречал, однако в список внести не могу, поскольку ничего толком на нем не писал, и не уверен, что смог бы без серьезного вложения времени - а это, практически, то же самое, что учить язык заново.
Теперь вопрос - существует ли язык, который мне стоило бы выучить для практических целей? Т.е. если бы я, скажем, не знал Перла, то мне бы стоило выучить его или, скажем, Питон или PHP - потому что, скажем, писать ad-hoc программки для обработки информации в различных форматах на них удобнее, чем на C или Яве. Мне так кажется. А если бы я не знал C, то мне стоило бы его выучить, чтобы писать более эффективные программы или пользоваться тысячами готовых библиотек, у которых есть интерфейс с C.
Т.е. мне интересно, какой язык, который, если я его выучу, позволить мне решать гораздо более эффективно некоторый класс задач - при этом класс достаточно часто встречающийся, чтобы имело смысл заниматься этим заранее (т.е. если какой-то язык позволяет жутко эффективно программировать ядерные реакторы, то это непрактично - буду работать с реакторами, тогда и выучу).
Tags:
no subject
Причем - именно не Haskell, с которым все носятся, а O'Caml, который и проще и практичнее.
no subject
no subject
Во-первых - как язык для программ, где надо иметь дело с всякими хитрыми структурами данных (синтаксические деревья etc) он хорош неверотяно - одной из моих коммерческих на нем работ был оптимизатор одного Zilog'овского ассемблера - с instruction scheduling, оптимизацией переходов, удалением неиспользуемого кода, и переименованием регистров (алгоритмика там стандартная, но не очень простая). Все это дело вписалось в полторы тысячи строк кода.
Пару раз в период увлечения я на спор переписывал Perl-овские скрипты знакомых админов на ML - в обоих случая они переписались "близко к тексту" и стали немного короче и при этом за счет типового контроля нашлись ошибки в исходных скриптах (хотя, разумеется, есть много перловых идиом, которые так просто не воспроизвести). Но вообще говоря, главная проблема при его практическом использовании - довольно бедные стандартные библиотеки.
Но это "прикладуха". На самом деле он imho интересен другим - если его юзить не "как паскаль" (то есть пытаться по возможности обходится без переменных и вообще - соблюдать стиль) то довольно быстро меняется техника программирования - и это транслируется и в "нормальные языки". "Чисто функциональные структуры данных", например, очень полезная техника - у них куча хороших свойств и в смысле мультитредности и в смысле версионирования etc.
То есть если коротко - то ML imho стоит изучить (и немного попрограммировать на нем) для расширения кругозора. У меня из всего моего списка языков он по этому параметру занимает первое место с большим отрывом.
PS: Возможно в качестве некоторого обзора забавная статья:
Strong Typing and Perl (http://perl.plover.com/yak/typing/typing.html). Там пол статьи про ML, хотя автор - перловщик и ML знает довольно поверхностно (но при этом пишет по делу)
no subject
no subject
caml.inria.fr -- домашная страница проекта.
no subject
no subject
Для расширения кругозора - это все понятно, но меня в данном случае интересовал более практический подход.
no subject
no subject
no subject
no subject
no subject
no subject
Оно, конечно, понятно что это бледное подобие
левой рукиЯвы, но спрос на него есть, и язык, в отличие от большинства поделок Микрософта, не омерзительный.no subject
no subject
Framework
Да, атрибуты
Вот еще например, я последний месяц занимаюсь стыковкой C# с голым C через Interop. Очень интересно.
no subject
Только немного синтакс другой? Да и к тому же, автор спрашивает про практическое применение, а что он сможет сделать с C#, а на Java нет?
no subject
no subject
На самом деле, язык программирования довольно жестко привязан к тематике. Определенный класс задач для Пролога и родственников, другой - для лисповых, третий для перлового семейства. И так далее. Пока не определишься, что хочешь программировать ядерные реакторы, нафиг тебе не потребуются соответствующие языки и библиотеки.
Есть, конечно, более универсальные языки, ну так в них главное - не базовый синтаксис, а то, к чему дается интерфейс, собссно, это не очень-то и связано с языком программирования.
no subject
no subject
no subject
no subject
http://en.wikipedia.org/wiki/Logic_programming
Вот классический пример - задачки типа "Американец не пьет виски, русский живет в синем доме, у мексиканца есть брат, бразилец с жителем красного дома - любовники, владелец серой кошки - не сосед мексиканца. Какого цвета дом у американца?"
no subject
Или просто тупо перебрать все варианты на любом языке :-)
no subject
no subject
no subject
no subject
Рассмотрим LISP (в прологе я менее компетентен) - там есть списки (с возможностью взять голову/хвост и apply function to all elements), ассоциативные массивы (property кажется там это называется), рекурсия.
В С++ со Standart Template Library все это тоже есть. Правда там все это сделано имея ввиду эффективную реализацию, что чyть затуманивает чисто-абстрактный смысл данных конструкций, но не сильно.
Да и с прологом, подозреваю что C++/JAVA классы с нужной функциональностью можно реализовать менее чем в 1000 строк.
Т.е. я подозреваю что языки типа LISP и пролог сейчас представляют интерес лишь теоретический, но не практический (за исключением разве что очень узких областей).
no subject
Лисповые дела на C реализовать несложно, хотя и сопряжено с головной болью. Прологовские сложнее. хотя дело мастера боится, cам-то пролог на C, в основном и реализован, по-моему. Дело не в списках и не в рекурсии. Логика языка другая. Можно реализовать. Но долго и противно.
no subject
no subject
Впрочем парсеры компиляторов/интерпретаторов можно писать с помощью yacc (и более продвинутые штуки есть).
Более того, парсер можно довольно легко писать и пpocтo на С рекурсивными функциями, по функции на каждое грамматическое правило.
no subject
no subject
Т.е. если бы я, скажем, не знал Перла, то мне бы стоило выучить его или, скажем, Питон или PHP - потому что, скажем, писать ad-hoc программки для обработки информации в различных форматах на них удобнее, чем на C или Яве.
""
Я для цели ad-hoc обработки текстов (текстовых репортов) использую gawk (GNU awk) - дешево и сердито, быстро и достаточно для данной цели.
Не настаиваю чтоб вы его учили, PERL конечно мощнее.
no subject
no subject
Читаем HTML, выбираем данные квартир, кладем в ассоциативные массивы индексируя уникальным ключом квартиры(адресом?); затем читаем и переписываем таблицу, по записанному там ключу проверяя в массивах. Вроде все гладко и удобно ложится на возможности gawkа
no subject
Ну а если совсем хочется challenge то можно попробовать RTL и так как вы интересуетесь криптоанализом то наверное слышали что алгоритм который подбирает ключи к кодировкам, если пробежит на железке сможет подобрать ключь примерно за 1.5 часаа в сравнении с миллионом лет вроде на самом крутом PC
no subject
Правда, об алгоритмах со временем 1.5 часа против миллиона лет я не слыхал. Это какие?
no subject
Только если на С можно тот же алгоритм гонять для разных ключей то на RTL только на 1, так как это всё в Hardware и не получает никаких инпутов.
no subject
no subject
no subject
А на этих сайтах я был, видел вопросы и находил ответы по синтаксу PHP, только меня больше интересует мнение опытного человека чем синтакс.
К примеру как лучше решить данную задачу, на PHP, a не как называется та или иная функция
а какой класс "некоторый"?