LINUX.ORG.RU

Подскажите ЯП.


1

3

Есть желание познакомится с новым языком программирования. Цель использования — программирование «для себя». Что хочу — максимум синтаксического сахара, ООП, лёгкие биндинги С либ, мультипарадигменность желательна, есс-но свободный и есс-но с компиляторами, очень желательно и с IDE тоже, под онтопик.

★★★★★

Ответ на: комментарий от cdshines

не думаешь про сахар, потому что там и так все удобно

хм... интересно, правда про лисп тоже так говорили...

и да, racket не лисп.

тогда гляну, после окамла

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

в общем, я как бы намекаю, что если ЛИСП считать ООП языком на основании того, что для него есть CLOS, то тогда и С считать ООП языком, на основании того, что для С есть Gtk

Это настолько толсто, что у меня чуть монитор не треснул.

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

Выразительность. Например, вместо (r1 * r2) / (r1 + r2), где ещё и r1 и r2 нужно определить, в J можно записать: r1 (* % +) r2, причём вместо r1 и r2 можно подставить числа.
Работа с многомерными массивами ещё.

quantum-troll ★★★★★
()
Ответ на: комментарий от next_time

в лисп есть ключевое слово «class», хотя бы (или аналог) ?

В лисп есть макросистема, которая позволяет транслировать исходный код хоть в классы, хоть в вольный пересказ Конституции США.

Твои аналогии между лиспом и костылями на Си и твои требования каких-то «ключевых слов» заставляют любого челвоека, хотя бы минимально знакомого с лиспом, истошно ржать.

Это даже при том, что я вообще-то лиспы не особо уважаю.

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

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

Это даже если просто не касаться того факта, что CLOS является частью CL. А уж если коснуться, то для тебя совсем всё печально.

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

В лисп есть макросистема, которая позволяет транслировать исходный код хоть в классы, хоть в вольный пересказ Конституции США.

Это не интересно. Мне интересно другое: ключевое слово «class», by design языка, а не его библиотек там есть или нет? (разумеется, вопрос, риторический)

истошно ржать.

хосподи, ещё один поней насмотрелся

если бы макропроцессор Си позволял транслировать код на крестах в код на Си, то крестов в виде отдельного компилятора никогда бы не появилось за ненадобностью

наивное заблуждение

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

P.S ты окончательно стал ракетоманом?

не, чиста так

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

А в чём разница между ключевым словом class и макросом class, если они будут делать фактически одно и то же?

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

в чём основные плюшки с точки зрения синтаксического сахара? язык, да, безусловно интересный

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

разница в инфраструктуре, если так можно выразиться, в том, что ключевое слово класс будет осилено абсолютно всеми, даже новичками, в то время, как то, что лежит в библиотеках, пускай даже стандартных, будет осилено не каждым, хороший пример — многопоточность в С++

также ключевое слово class как отдельная синтаксическая единица ведёт собой более удобную разметку, всякие плюшки вроде раскраски кода и автодополнение, синтаксический сахар, более правильную, адаптированную под специфику языка оптимизацию, наконец, оно __выделяется__ среди прочего кода, а не как в лиспах — всё в каше

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

преимущество — лаконичность как в питоне, статическая типизация как в си, строгая типизация как в паскале и лучше, шаблоны и макросы (читающие-модиф. АСТ), функции, которые выполняются на этапе компиляции (можно написать функцию, пометить её как компайл-тайм и она выполнится (например дёрнуть какую внешнюю программу, а результат подставится по месту вызова), closures, objects, управляемый мусоросборщик, никакого оверхеда при вызове си-функций, рефлекшн на этапе компиляции (можно перечислить в цикле названия полей объекта и сконвертировать их в строки например)... и всё это компилируется в нативный код без зависимостей.

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

(* % +) означает «произведение, делённое на сумму». Вот ещё примеры:
+/ % # — cумма элементов делённая на длину списка, иначе говоря — среднее значение.

fibN=: (-&2 +&$: -&1)^:(1&<)
$: значит «вызвать себя», x u&v y → (v x) u (v y). -&1 и -&2, соответственно, вычесть 1 или два.
v ^: n означает «применить глагол n раз», в данном случае, 0 или 1.
Таким образом, fibN y означает: y, если y ≤ 1, иначе сумма fibN (y - 2) c fibN (y - 1).
encodeLZW =: 4 : 0
 d=. ;/x
 r=.0$0
 wc=.w=.{.y
 for_c. }.y do.
   wc=.w,c
   if. d e.~ <wc do. w=.wc else.
     r=. r, d i.<w
     d=.d,<wc
     w=.c
   end.
 end.
 r, d i.<w
)
LZW сжатие. Думаю, очевидно, как это работает.

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

Я немного о другом. Что написать хочешь, из какой области?

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

Это не интересно. Мне интересно другое: ключевое слово «class», by design языка, а не его библиотек там есть или нет? (разумеется, вопрос, риторический)

Это я уже понял, что реальное применение инструмента тебе не интересно, тебе интресны какие-то собственные заскоки и воображаемые друзья вроде «ключевого слова class».

наконец, оно __выделяется__ среди прочего кода, а не как в лиспах — всё в каше

Т.е. если слово занесено в одну главу спеки языка, то оно ВЫДЕЛЯЕТСЯ в коде. А если в другую главу - то уже НЕ ВЫДЕЛЯЕТСЯ. Скажи. Тебя в детстве по голове сильно били?

ключевое слово класс будет осилено абсолютно всеми, даже новичками

А. Теперь вижу, что сильно били. Да.

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

треды + конкурентность? Когда тыкал нимрод, там этого не то что не было, а заявлялось «идите в лес»

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

есть многопоточность и недавно один чел закомитил lock-free hash-table.

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

Да я джвадцать лет ждал такой язык!

преимущество — лаконичность как в питоне, статическая типизация как в си, строгая типизация как в паскале и лучше, шаблоны и макросы (читающие-модиф. АСТ), функции, которые выполняются на этапе компиляции (можно написать функцию, пометить её как компайл-тайм и она выполнится (например дёрнуть какую внешнюю программу, а результат подставится по месту вызова), closures, objects, управляемый мусоросборщик, никакого оверхеда при вызове си-функций, рефлекшн на этапе компиляции (можно перечислить в цикле названия полей объекта и сконвертировать их в строки например)... и всё это компилируется в нативный код без зависимостей.

Ёпт... это не может быть настолько хорошо, как ты описываешь. Где-то подвох! :D

anonymous
()
Ответ на: Да я джвадцать лет ждал такой язык! от anonymous

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

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

Читаю туториал.

Похоже, что это ровно тот язык, о котором я уже много лет думаю «ну когда уже кто-нибудь его создаст!»

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

К черту Rust, D, Go и остальные энтерпрайзно-хипстерские поделки. Попробую этот ЯП использовать для всякой мелочи. Если попрёт, может и в разработке приму участие.

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

Типы умных указателей, в отличие от C++, встроены в язык. Для них возможна статическая проверка на корректность использования. Объекты все по умолчанию константные, по-моему очень удобно.

Хорошая система типов, шаблоны поддерживают ограничения типов аргументов(Похоже на concepts из C++). При этом система типов получилась довольно простой, проще, чем в C++, но сравнимая по выразительности.

Блоковые анонимные функции, паттерн матчинг, всё это есть

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

Это не интересно. Мне интересно другое: ключевое слово «class», by design языка, а не его библиотек там есть или нет? (разумеется, вопрос, риторический)

Когда есть макросы, то языковые фичи стараются реализовывать именно в виде библиотек, а не в виде «by design» языка, т.к. это намного лучше.

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

также ключевое слово class как отдельная синтаксическая единица ведёт собой более удобную разметку, всякие плюшки вроде раскраски кода и автодополнение, синтаксический сахар, более правильную, адаптированную под специфику языка оптимизацию, наконец, оно __выделяется__ среди прочего кода

Все это и в случае макросов есть, не вижу проблем.

разница в инфраструктуре, если так можно выразиться, в том, что ключевое слово класс будет осилено абсолютно всеми, даже новичками, в то время, как то, что лежит в библиотеках, пускай даже стандартных, будет осилено не каждым, хороший пример — многопоточность в С++

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

anonymous
()

Что хочу — максимум синтаксического сахара
есс-но с компиляторами
ООП
желательно и с IDE

scala.

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

Я бы посоветовал haskell, но там нет ооп. Да и зачем советовать плохое. Руби не статически типизированный. Остается C#.

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

не вижу проблем.

рад за вас, а я - вижу, но тыкать всех подряд в них не собираюсь — фанатики всё равно не увидят очевидного

next_time ★★★★★
() автор топика
Ответ на: комментарий от quantum-troll

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

next_time ★★★★★
() автор топика

В итоге выбрал Scala. Причины: из посоветованных здесь Scala, Rust, Ocaml Rust — это тот же Ocaml, ориентированный на производительность, а я выбираю язык с максимумом сахара, это не то. Ocaml же по уровню сахара сливает Scala, пруф: http://benchmarksgame.alioth.debian.org/u64q/benchmark.php?test=all&lang=... , раздел код в первой таблице (там приводится объём кода)

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

Фанатики, защищающие CL, которые сроду CL не использовали и не будут, ога, ога.

Зелененький, а может это ты фанатик-то? Как тебе такая идея?

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

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

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

Ты сначала осиль сформулировать, к чему именно этот «аргумент», аргументальщик хренов. :)

А то я щас ссылку на сборник сказок Пушкина дам и тоже скажу, что это аргумент. Попробуй опровергни.

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

Вот видите как у меня либастрал хорошо работает:

брызгать слюной

аргументальщик хренов

мямлить

я щас ссылку на сборник сказок Пушкина дам

и изворачиваться

и тоже скажу, что это аргумент

Про «шланговать» только запамятовал написать:

Ты сначала осиль сформулировать

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

Вот видите как у меня либастрал хорошо работает:

Да нет, это у тебя хорошо работают два первых правила демогога: не отвечать на вопросы и требовать от оппонента доказательств, что он не верблюд. Херушки тебе.

Скажи, тебе реально охота выставлять себя идиотом, не способным вести дискуссию, перед всеми интернетами? Эти вот твои строчки тут ведь навсегда останутся вместе с ником, это тебе не двач.

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

ну, меня несколько смущает его .NET происхождение — .NET на линуксе на птичьих правах, вот и в данном случае, он вроде никакими IDE под линуксом не поддерживается

плюс мне в этом топике всё-таки определённые подробности хотелось бы услышать, отзывы эксплуатировавших

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