LINUX.ORG.RU
ФорумTalks

Поиск ЯП и его свободного компилятора


0

1

Разыскивается язык программирования и его свободный (желательно GPL) компилятор, который генерирует наиболее оптимизированный код. То есть, чтобы получившийся бинарник содержал как можно меньшее количество операндов, выполнялся быстрее и меньше кушал памяти. Требуется переносимый ЯП, так что ассемблер не предлагать. Также нужно, чтобы бинарник запускался на любом линуксе «as is», не требовал установки всяких дотнетов и Java-машин.

Пример ответа: C99 и GCC 4.3.5. Желательно с тестами, пруфлинками.



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

не требовал установки всяких библиотек

Любое приложение использует библиотеки. Без них будет только hello world.

vurdalak ★★★★★
()

Пример ответа: C99 и GCC

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

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

Конкретно ничего писать не планирую, просто ищу такой вот идеальный для меня язык и компилятор (сабж), чтобы развиваться в этом направлении.

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

ns_ramesses> Тестировать производительность лучше без библиотек, городя велосипеды.

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

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

Для реальных приложений, конечно. Но и общую производительность как-то замерять нужно. Например, одна и та же задача реализована на двух языках программирования. Первый бинарник содержит 8000 операндов и не использует библиотек. Второй содержит 400 операндов, но использует библиотеку XYZ.so. При этом общее время исполнения разное, и объем памяти программы жрут разный. Как сравнить все это? Я вижу только один путь - переписать решение на втором языке, чтобы не использовало библиотеку.

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

C, C++, fortran. Вроде ничего не оптимизируется сильнее.

Свободных компиляторов кроме gcc в индустрии пока вроде нет.

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

ns_ramesses> Для реальных приложений, конечно.

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

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

> Свободных компиляторов кроме gcc в индустрии пока вроде нет.

4.2

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

ns_ramesses> Ну а как тогда сравнить производительность двух программ, про которые я написал тут?

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

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

линкуешься статично, линковщику «говоришь» выкинуть все неиспользованное, проверяешь размер и скорость

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

> Без них будет только hello world.

hello word тоже использует библиотеки

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

> Конкретно ничего писать не планирую, просто ищу такой вот идеальный для меня язык и компилятор (сабж), чтобы развиваться в этом направлении.

LOL. Ну изучите вы какой-нибудь Форт и что дальше? Кому вы нужны будете с такими знаниями? Язык выбирается в зависимости от задачи, наличия и стоимости программистов на этом языке, наличия и качества библиотек и средств разработки и т.д. Но это при старте новых проектов. На практике же обычно требуется развивать проект уже существующий, поэтому вопрос выбора языка просто не стоит.

Relan ★★★★★
()

>Разыскивается язык программирования и его свободный (желательно GPL) компилятор, который генерирует наиболее оптимизированный код. То есть, чтобы получившийся бинарник содержал как можно меньшее количество операндов, выполнялся быстрее и меньше кушал памяти.

Assembler и GAS

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


Ксо >_<

Тогда Assembler и PASM

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


Тогда делай сразу вдоль.

Quasar ★★★★★
()

паскаль, там меньше всего операндов. в си иногда и по 3 бывает

note173 ★★★★★
()

FreePascal имеет интересное свойство: полученные бинарники вообще статичны, работают без внешних библиотек.

Если устраивает зависимость от libc, то можно применить так же язык Ada с компилятором GNAT (свободная версия входит в состав GCC и LLVM). Но бинарники получаются огромными, так как в них линкуется статически Ada Runtime.

Deleted
()

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

это ортогональные требования.

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

> FreePascal имеет интересное свойство: полученные бинарники вообще статичны, работают без внешних библиотек.

Разработчики в 2011 году всё еще не могут открыть для себя динамическую линковку?

geekless ★★
()

И да, присоединяюсь к FreePascal.

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

>> FreePascal имеет интересное свойство: полученные бинарники вообще статичны, работают без внешних библиотек.

Разработчики в 2011 году всё еще не могут открыть для себя динамическую линковку?

geekless в 2011 все еще такой же неосилятор гугла, как и раньше?

dikiy ★★☆☆☆
()

прошел по ссылке. Там, как ни странно, Паскаль разрывает всех в клочки по параметру Mem Used

1.0   Pascal Free Pascal    1.57
2.2   ATS    3.38   
2.5   C GNU gcc    3.93   
3.4   C++ GNU g++    5.40   
3.5   Fortran Intel    5.43
4.2   Ada 2005 GNAT    6.62   

А если дать параметру Memory Used и Time одинаковые коэффициенты, то получается так:


1.0   Pascal Free Pascal    1.99
1.1   C GNU gcc    2.20   
1.1   ATS    2.26   1
1.2   C++ GNU g++    2.48   
1.7   Ada 2005 GNAT    3.44   
1.9   Fortran Intel    3.74
2.3   Lua LuaJIT    4.58   

dikiy ★★☆☆☆
()

Ищу марку автомобиля.
Требования <бла-бла-бла> и чтоб лейбл обязательно содержал кружочек и английскую букву Z.
Пример ответа: opel. Желательно с тестами, пруфлинками.

trex6 ★★★★★
()

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

оптимальный по какому критерию?

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

выберите что-нибудь одно

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

>в частности под условия ТС вроде бы подходит еще Free Pascal

не вродебы, а точно и стопроцентно.

sniper21 ★★★★★
()

бинарник содержал как можно меньшее количество операндов, выполнялся быстрее и меньше кушал памяти


а причем тут влияние количества операндов на скорость выполнения проги? на 2010 год самое большое влияние на скорость работы программы имеет cache miss

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

> на 2010 год самое большое влияние на скорость работы программы имеет cache miss

Вот за что я люблю ЛОР, так это за подобные безкомпромиссные, люто некомпетентные высеры :D

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

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

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

> линковщику «говоришь» выкинуть все неиспользованное

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

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

Ну изучите вы какой-нибудь Форт и что дальше? Кому вы нужны будете с такими знаниями?

«Just for fun» же. Так, посидеть, выучить, потренироваться, написать несколько несложных приложений. Я понимаю, что в энтерпрайзе™ разработчики залезли в такие высокие уровни, что даже на C++ не пишут. Это для них низковато, любят зарываться в горы абстракций и прочие сишарпы. Именно о них и об абстракциях Торвальдс писал в LKML: «C++ is a horrible language».

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

>> forth

Он переносимый, как и Си?


Гораздо более переносимый, чем Си. Потому что интерпретатор форта не трудно накатать на ассемблере. Правда, с производительностью при этом могут быть проблемы :)

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

>Выходит, что Си и GCC - самый быстрый.

В сферическом вакууме. А вот допустим на распараллеливающихся задачах тот же С++ рвет чистый С

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