LINUX.ORG.RU

Муки выбора первого юзабельного языка (pascal за язык не считается). Есть два ООП ЯП: лиспы точеные и питоны золоченые...

 , ,


2

5

Решил изучать первый (после псевоязыка: паскаля) ООП ЯП. Всё думаю, куда сесть то: на лиспы точеные или на питоны золоченые? Цели: нейронные сети, работа с БД, ФС, мелкие поделки школьного уровня (типа машинного обучения на SVM).

Какие преимущества и недостатки у того и другого ЯП?

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



Последнее исправление: ymn (всего исправлений: 1)
Ответ на: комментарий от somequest

Хуйло блядь, тебе сто раз тут объяснили, как в чистом ФП любой стейт реализуется, а ты, хуйло, до сих пор воняешь. Хуево быть шизофреником с IQ ниже чем у Трампа, да?

anonymous
()
Ответ на: комментарий от anonymous

Только кавычки - больше десятка правил

Так и добавьте этот десяток правил ко всем пяти BNF. Ничего не изменится.

anonymous
()
Ответ на: комментарий от anonymous

Давайте остальные, потому что если они такие же как кавычки, то по прежнему ничего не изменится.

Кстати, забыл ссылку на Erlang. https://github.com/ignatov/intellij-erlang/blob/master/grammars/erlang.bnf Тут какой-то специальный формат с лишними словами, но правил всё равно больше.

Gentooshnik ★★★★★
()
Ответ на: комментарий от anonymous

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

Gentooshnik ★★★★★
()
Ответ на: комментарий от Gentooshnik

Ты напиши сначала бнф с кавычками и посмотри, что у тебя получится. Потом перейдет к остальным пунктам, не суетись.

anonymous
()

кложа! кложа! кложа! кложа!

rupert ★★★★★
()
Ответ на: комментарий от anonymous

Муки выбора первого юзабельного языка (pascal за язык не считается). Есть два ООП ЯП: лиспы точеные и питоны золоченые... (комментарий)

Правила с кавычками примерно везде примерно одинаковые. Если добавить 10 (правил) к пяти разным числам (количеству правил в приведенных BNF), то разность этих чисел друг с другом не изменится. =_=

(Может начать требовать скан аттестата хотя бы за 9 классов, прежде чем позволять писать на ЛОРе)?

Gentooshnik ★★★★★
()
Ответ на: комментарий от anonymous

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

Специально для вас, правил чтения строк нету ни в одной из этих пяти BNF. Там везде написано одно правило вроде «кавычка - какие-то буквы - кавычка, значит отдаём эти какие-то буквы функции прочитать_строку». Чтобы привести в соответствие с остальными четырьмя, в BNF CL достаточно добавить такое же одно правило.

Всё, давайте остальные пункты.

Gentooshnik ★★★★★
()
Ответ на: комментарий от Gentooshnik

Правила с кавычками примерно везде примерно одинаковые.

Ты для начала напиши их, а потом рассуждай. А то единственный вывод из твоего нежелания предоставить эти правила - в том, что их далеко не 10. А все сотня.

anonymous
()
Ответ на: комментарий от Gentooshnik

Специально для вас, правил чтения строк нету ни в одной из этих пяти BNF.

При чем тут правила чтения строк, упоротый? Я про `(,)

anonymous
()
Ответ на: комментарий от anonymous

У нас проблема. Похоже, вложенные обратные кавычки в BNF не выражаются вообще, потому что они как бы несбалансированы с круглыми скобками. Например: `(a `(b (,,c))) Вложенность придется проверять вне синтаксиса, а так вот что получилось: http://pastebin.com/q8A4j5ZJ

Написано по стандартной readtable, соответственно могут быть ошибки, но неучтенного синтаксиса быть не может. Если Вам придёт в голову как сделать проверку вложенности обратных кавычек в синтаксисе - прошу предоставить BNF. На данный момент CL оказывается на втором месте после Tcl.

Gentooshnik ★★★★★
()
Ответ на: комментарий от Gentooshnik

У нас проблема.

Ну наконец. Дошло-таки. На самом деле выражаются, просто это нихрена не просто.

Если Вам придёт в голову как сделать проверку вложенности обратных кавычек в синтаксисе - прошу предоставить BNF.

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

anonymous
()

Python - много литературы в том числе и по нейросетям. А дальше уже выберешь подходящий тебе лисп.

alienclaster ★★★
()

Предлагаю VB.NET. Отличный язык для начинающих. Мощный и простой. Много документации и литературы.

anonymous
()

Имеет смысл прислушиваться с хакерам, а не к непонятно кому :-) Вот тебе ссылочка на методичку одного хакера, Эрика Раймонда, http://www.catb.org/esr/faqs/hacker-howto.html#skills1, который в качестве первого языка рекомендует Пайфон. :-)

PS. Не являюсь фонатиком ни Пайфона, ни Лиспа, ни цепепе, ни Си. :-) Продуктивным можно быть при использовании любого языка. Главное - поймать кураж и чтобы скучно не было :-) Задроты же - обыкновенные последыши догм, которые скучны как остывший чайник :-)

anonymous
()

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

kramh
()
Ответ на: комментарий от kramh

наверное, ключевыми являются вставки на С. потому что питон (внезапно!) работает только на одном ядре. и как-то грустно смотреть, как он бездарно сжирает 100% одного ядра, а все остальные стоят нетронутыми. я не пишу на питоне, но наблюдаю, как соратники на работе скриптики запускают. это капец, сколько они жрут, даже на простейших задачках. какой там ИИ, там обычная работа с файлами может сожрать целый сервер. говорят, к нему можно приделать костыль для псевдомногопоточности. но он мало помогает, ибо там глобальный лок для всех объектов и нет смысла параллелить, всё упрётся в этот лок.

Iron_Bug ★★★★★
()
Ответ на: комментарий от Iron_Bug

там обычная работа с файлами может сожрать целый сервер

там глобальный лок для всех объектов и нет смысла параллелить, всё упрётся в этот лок

Глобальный лок не распространяется на I/O и сишные расширения. Работа с какими файлами может сожрать целый сервер, я слабо представляю. Пускай соратники либо чинят руки, либо вправляют мозги, чтобы не использовать неподходящий инструмент не по назначению.
И не пишите критически о том, чего не знаете хорошо, чтобы не уподобляться кукаретикам.

Virtuos86 ★★★★★
()
Последнее исправление: Virtuos86 (всего исправлений: 1)
Ответ на: комментарий от Virtuos86

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

Iron_Bug ★★★★★
()
Ответ на: комментарий от Iron_Bug

Я с трудом перебарываю фейспалм, но отвечу. Питон, как и все подобные ему ЯП, сделан не для вычислительных задач. Если вы хотите решать на нем таковые, то его следует использовать как «клей» для библиотек, написанных на низкоуровневом ЯП, обычно это Си. Питон сделан для быстрого прототипирования и для тех задач, для которых его производительности достаточно. Прямо говоря, питон — «тормоз». Если ваши чудо-специалисты упираются в его тормоза, но не пытаются их решить, то они ССЗБ. Используют ли они multiprocessing, пробовали ли PyPy, на худой конец, почему не напишут библиотечку на Си для наиболее типовых задач, встречающихся в работе? А если их не устраивает изкоробочная производительность питона, и они ленивы, пускай попробуют Golang, самое то будет.

Virtuos86 ★★★★★
()
Ответ на: комментарий от Iron_Bug

там глобальный лок для всех объектов

Глобальный лох там :-)

anonymous
()
Ответ на: комментарий от anonymous

ну дык, расплодить процессы - самое излюбленное решение для жертв однопоточности. есть только один минус: вся память растиражируется в копиях на каждый процесс, все хэндлы ресурсов и т.д. что нах не нужно в 99% случаев. и, в дополнение к процу, питон начнёт жрать ещё и дофига памяти. причём то, что там можно использовать shared memory, не добавляет эффективности, потому что - та-дам! - GIL в каждом отдельном процессе никуда не делся и мьютексы на доступ будут работать через задницу. часть задач распараллелится, но за счёт использования куда бОльшего количества ресурсов, в том числе системных. пожертвовать памятью и ресурсами ядра в пользу выполнения в параллели - сомнительное удовольствие.

Iron_Bug ★★★★★
()

Если нейронные сети, то это машинное обучение, лучше взять либо Python с фреймворком Caffe, Theano, Torch, TensorFlow, sk learn, либо взять яп R, лично мне больше Python нравится. Работает шустро, там многое написано на C/C++ и на CUDA, тебе главное с умом это все использовать.

Int64 ★★★
()

и всё равно, ТС не осилил паскаль)

darkenshvein ★★★★★
()

Не мучай себя, сын мой!

Выбери Си. Читый Си без крестов! «Крещённый Си» используют только в богопротивных корпоротивных проектах.

anonymous
()
Ответ на: комментарий от Iron_Bug

Если нужны скрипты, пусть соратники вместо драного питона берут Tcl. Там изкоробки есть нормальная многопоточность с разделяемой памятью и мьютексами. А так два чая за Golang, да.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.