LINUX.ORG.RU

Какие есть годные языки с производительностью на уровне C?

 ,


3

7

Какие есть языки, в которых производительности и потребление памяти близки к таковым для кода на C (разница не более чем в 2-3 раза, а не в десятки и сотни раз как на всяких питонах), но без извращений с ручным выделением памяти и поддержкой функций как значений переменной, оптимизации хвостовой рекурсии и тд?

Желательна строгая типизация.

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

★★★★★

Последнее исправление: Xenius (всего исправлений: 4)

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

free делать после последнего использования

man shared_ptr, но это тебе c++11 надо

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

Ocaml неоднократно показывал превосходство над си как в производительности, так и в скорости разработки.

очевидно аффторы тестов не осилили даже C.

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

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

++

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

Если на хаскеле будет быстрая сортировка, а на C пузырьком — то конечно будет быстрее.

не факт. Та реализация qsort, что на хаскеле и из одной строчки, по скорости примерно как пузырёк на сишечке, а по памяти сливает на много порядков.

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

явно читаемее, чем Perl

([:{:@:>@:{.[:(}:@:>@:{:;~>@:{.,[:-~`*/_2&{.@:>@:{.,{:@:>@:{:)^:(*@:#@:>@:{:)^:_(0 1x;[:>:@:([:(}:,<:@:{:)#;.1)#.^:_1))

Ты уверен? :)

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

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

Да Common Lisp. SBCL тот же. Память - изначально грузится достаточно большой рантайм и компилятор, но само потребление памяти вменяемое

Да Java. JVM та же. Память - изначально грузится достаточно большой рантайм, но само потребление памяти вменяемое

Karapuz ★★★★★
()
Ответ на: комментарий от HNO-Arzt_

То есть лямбды это не математика? В первую очередь фишка хаскеля в его компиляторе, именно там математическая магия и оптимизации.

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

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

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

Ты уверен?

Там есть специальные слова для облегчения ручного парсинга таких штук :)

Вернее, не слова, а режимы вывода.

Рекомендую ATS, SML или Scheme (хотя там все не очень хорошо), Go, D, какие-нибудь Nimrod и Euphoria.

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

Euphoria.

Аналог Lua с тяжелым досовским наследием?

Nimrod

А что в нём хорошего? Там хотя бы комбинаторы есть?

хотя там все не очень хорошо

Что именно не очень хорошо?

ATS

А как насчёт Idris?

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

Можно я (не)много не в тему, но скажу. Допустим используются OCaml/Lisp/Haskell/etc. Что у них с GUI? Я у меня все никак руки не дойдут добраться до вводной информации об этих творениях. Вот как я себе это представляю. На всем этом пишутся библиотеки. А ЯП с богатыми GUI их подцепляют и дело в шляпе. Так или не так?

Temp
()

Java, если писать аккуратно. Ну то есть всяие циклы и арифметика с примитивами там такие же быстрые как в Си - ничего удивительного, JIT же.

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

Что у них с GUI?

На Tcl например подцепляется пакет Tk, хотя он и так вроде в wish по умолчанию, после чего доступны новые команды, которыми можно натыкать виджетов и обрабатывать инфу.

В Lua примерно так же, только там функции. Впрочем Tcl-команды — это и есть функции, просто у них синтаксис — это

command arg1 arg2 ... argN

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

Я сам этот вопрос исследовал. Из реально работающего выбор такой: C#, Java, Go (?). Насчет последнего не уверен. Все остальное не продакшен реди.

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

Что именно не очень хорошо?

Тормоза :)

Там хотя бы комбинаторы есть?

Этого требования в ОП не было.

как насчёт Idris?

Тормоз

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

Япона мать! Утилиты — это, пожалуй, 99.99% программного обеспечения. А уж оставшийся 0.01% — монстры, вроде либреофиса.

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

Все остальное не продакшен реди.

У меня стоит гуи-прога на Ocaml, вполне норм работает. Так что склоняюсь к нему пока что. Хотя, может и idris.

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

С сишечкой все равно не сравнится. С хаскелем — примерно одинаково. В хаскель оптимизаций натыкано по самое не балуйся.

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

Просто програмку написть можно. Я под прод реди гораздо большее имею в виду - что бы реально можно было саппортить проект не один год, что бы работало на новых реализациях, что бы можно было людей в проект найти. Вот и остается: C/C++/C#, Java. Это из быстрого. Есть маленькая надежда на Go.

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

Джаба говно, а не язык, поэтому не подходит по критериям в топике(в частности, тс ищет язык программирования)

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

А как он по сравнению с хаскелем?

На хаскеле можно писать программы.

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

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

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

Дык вы тут место прикармливаете.

anonymous
()

Очередная тема, где ЛОР, скопом, перечисляет языки программирование известные науке.

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

C# вполне неплохой ЯП, если не злоупотреблять сладким. А если еще и на ReSharper раскошелиться...

Temp
()

C++11. Это не шутка и не троллинг.

производительности и потребление памяти близки к таковым для кода на C

Ближе только сам С

без извращений с ручным выделением памяти

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

поддержкой функций как значений переменной

Не вопрос, их есть у нас

оптимизации хвостовой рекурсии

Тут вопрос к знатокам компиляторов, сам врать не буду.

Желательна строгая типизация.

Да пожалуйста.

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

Тут очень умная формулировка, я не совсем понял. Разве не любой язык можно выучить за ограниченное время?

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

Нет RAII, не сделать смартпоинтеров, так что не совсем подходит.

anonymous
()

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

если б не это, то D, в принципе можно взять нужное его подмножество

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

Тут очень умная формулировка, я не совсем понял. Разве не любой язык можно выучить за ограниченное время?

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

Лучше я вручную память выделять буду.

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

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

Ручной разбор циклических зависимостей - это таки извращение.

Да пожалуйста.

В С++ типизация не строгая. Хотя во многом это наследие Си и при правильном использовании языка строгости С++ вполне достаточно.

Разве не любой язык можно выучить за ограниченное время?

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

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

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

нет, не на пустом. Фишка в том, что для пузырька память не нужна. Нужно только одно слово на любое число данных. А вот для qsort таки нужна, причём даже грамотная реализация qsort тратит в худшем случае O(N) слов памяти(в среднем O(log(N))). Ну а та строчка, про которую я говорю, она совсем неграмотная. Да, красиво конечно, но не работоспособно. Такое бывает в технике.

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

Что у них с GUI?

прикрутить можно. Это меньшая из проблем.

А ЯП с богатыми GUI их подцепляют и дело в шляпе. Так или не так?

а иди-ка ты в C++. Там тебе и Windows, и KDE, и GNOME, и всё остальное. Вот только при чём тут гуй?

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

Java, если писать аккуратно. Ну то есть всяие циклы и арифметика с примитивами там такие же быстрые как в Си - ничего удивительного, JIT же.

про примитивы я не в курсе, а вот программы получаются тормозные и жручие. Это факт.

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

Не могли бы Вы рассказать более подробно, что не так с C#? И почему он «убожество»?

win only.

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