LINUX.ORG.RU
ФорумTalks

libc и её «стаблильный API» в наши дни.


0

1

В последнее время меня заколебали глюки FreePascal'я и мудаки среди его разработчиков, которые пишут говно-код и строят фееричные мнения относительно того, как должен работать их компилятор... Но не будем углубляться в тему какого фига const на 64-битах они трактуют для аргументов функций по другому, нежели на 32-битах, а именно копируют по стеку все данные(что просто невероятно убивает производительность большинства вычислений сложнее работы с обычными типами данных), и перейду к вопросу, что эти мудаки за столько лет для 64-бит используют неоптимизированную реализацию move(от чего, по заявлению в багтрекере, у меня тормозит SetLength). Всем, кто не знает Pascal, можете не углубляться, процитирую кое-какой текст:

On Linux/i386, the «move» routine from the fastcode project is used. On Linux/x86_64, a generic Pascal implementation is used. On Mac OS X, we always use the libc version.

На вопрос(хотя я уже потом вспомнил, что FPC на линуксах абсолютно независим):

Why not to use it on Linux?

получил ответ:

blablablabla... And the reason for not using libc, is that libc is not the same on all different Linux distributions, and not always completely backwards compatible (although I believe that's less of a problem nowadays). That means that depending on libc can make it harder to distribute compiled programs that work everywhere.

Теперь главный мой вопрос - чем, б*ь, libc на MacOS X(разных версий) отличается большей совместимостью/стабильностью, чем на дистрибутивах Linux? И впрямь все так хреново и какой-то более-менее известный дистрибутив предоставляет какую-то калечную версию libc несовместимую с другими, или разработчики живут каким-то 2001-2002?

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

mono> тормозного питона

Ты никогда не писал код на питоне. Если руки растут из жопы - тормозной код будет и на ассемблере.

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

mono> упоролся? TurboPascal и Delphi - разные языки. как можно пилить совместимость с ними одновременно?

Это ты упоролся. Delphi - это вообще не язык, а среда разработки. Turbo Pascal - тоже. Язык называется Object Pascal. И он как в Turbo Pascal 7,так и в Delphi есть.
Дотнет сожрал твой мозг.

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

tx> Для фофана это намного проще и удобнее.

Так пользуйся сразу бэйсиком. Под линукс реализации есть.

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

А я вижу:

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

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

Это ты упоролся. Delphi - это вообще не язык, а среда разработки.

I have bad news for you... т.к. начиная с Delphi 7, сам язык тоже вместо Object Pascal стали называть Delphi.

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

> Если тебя пугает такой код, то самое время глянуть в сторону SDL или движков, предоставляющих нужный функционал без плясок :)

Пугает, да. Что за движки?

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

Andru> I have bad news for you... т.к. начиная с Delphi 7, сам язык тоже вместо Object Pascal стали называть Delphi.

Только это не значит, что он прямо таки изменился по сравнению с Object Pascal. Основа Turbo Pascal изначально была частью Delphi, в том числе и сам язык.

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

> А на бэйсике Hello World в оду строчку умещался, в то время как на Qt... ;)

Поэтому и выбрал впоследствии Ruby. :) Там правда раздражает одна «сишность» в виде «if a==b», но лучше пусть будет только это, чем всё остальное.

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

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

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

Что за движки?

Не знаю... я например для себя страдаю такой фигней, на которой делают такие игры, и такие(хотя тут графика уже вся поменялась). Но оно паскальное и пропитано процедурным программирование до кости мозга :}

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

Только это не значит, что он прямо таки изменился по сравнению с Object Pasca

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

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

> И на деле очень неудобным.

И чем это он неудобен, если не секрет? Хреновые компиляторы и скудные библиотеки к удобству языка думаю не относятся.

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

mono> ну конечно, питон быстрее паскаля, это у меня руки кривые.

Совершенно верно.

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

Andru> Сильно расширился за счет перегрузки операторов и дженериков и пр. мишуры

Во во - надмножество, а не в принципе другой язык.

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

tx> И чем это он неудобен, если не секрет? Хреновые компиляторы и скудные библиотеки к удобству языка думаю не относятся.

Дофига всего не поддерживается. Бэйсик - чисто процедурный язык программирования. В изначальном виде он был пригоден только для простеньких вычислительных программулек, эдакий первобытный упрощённый математический пакет. Но к нему приделывали всякие костыли, которые в свете природы бэйсика выглядели несуразно, и в результате получили уродства вроде QBasic, Visual Basic и т.д. Более менее адекватной реализацией был спектрумовский бэйсик.

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

For fun: BlackBox Component Builder (Component Pascal).

Кстати да, я постоянно сталкиваюсь с мнением, что пора валить на Oberon, может и впрямь попробовать... :)

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

TurboPascal не совместим с ObjectPascal, там было много изменений, а ObjectPascal переименовали в Delphi, чтобы не было путаницы между языком и средой. FreePascal - это как раз реализация Delphi со своими плюшками.

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

> Но к нему приделывали всякие костыли

Чем это отличается от библиотек в других языках кроме общего namespace?

и в результате получили уродства вроде QBasic, Visual Basic


Объяснение в стиле «плохо потому что плохо». Не вижу ничего плохого в том же VB, кроме опять же уродского недокомпилятора. Пишешь только алгоритм, не погружаясь в системную лабуду - это плохо что-ли?

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

> Кстати да, я постоянно сталкиваюсь с мнением, что пора валить на Oberon, может и впрямь попробовать... :)

Только не забудь сперва спросить у мнящих:
1. Сами-то они свалили;
2. Пусть покажут свои шедевры на Oberon'е.

А там видно будет. :)

atrus ★★★★★
()

>Теперь главный мой вопрос - чем, б*ь, libc на MacOS X(разных версий) отличается большей совместимостью/стабильностью, чем на дистрибутивах Linux?

Если собирать с наиболее старой версией из используемых в разных дистрибутивах (например, из CentOS), будет работать везде

annulen ★★★★★
()

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

лично я собираю через apgcc из пакета autopackage (который нынче смержился с linstaller). apgcc автоматически вырезает лишние депенды, и линкуется к минимально возможной версии ABI на данной системе. дает весьма хорошую совместимость. к примеру, бинарники, собранные таким образом на свежем арче, спокойно запускаются на debian lenny, centos5, и тд. очень удобно.

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

>они вряд ли примутся хоть что-то делать в направлении по использованию libc вместо своего говно-кода...

я вижу два выхода:

1)неиспользовать это г маомнта вообще

2)пройтись по исходникам в поисках ифдефов для макоси, и написать аналогичные вызовы glibc

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

лично я собираю через apgcc из пакета autopackage (который нынче смержился с linstaller). apgcc автоматически вырезает лишние депенды, и линкуется к минимально возможной версии ABI на данной системе. дает весьма хорошую совместимость. к примеру, бинарники, собранные таким образом на свежем арче, спокойно запускаются на debian lenny, centos5, и тд. очень удобно.

интересная возможность... подать идею разработчикам FPC что ли :)

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

> не проще ли поставить в чрут centos5 и собирать в ней?

сделать «export CC=apgcc» перед сборкой - проще, чем ставить centos.

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

>сделать «export CC=apgcc» перед сборкой - проще, чем ставить centos.

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

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

> зато у тебя появится не только универсальный компилятор, но и библиотеки

для бинарной сборки я почти все библиотеки статически линкую.

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

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

>для бинарной сборки я почти все библиотеки статически линкую.

ну это не всегда выход

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

не факт, что пакеты, собранные под lenny, будут работать в CentOS/RHEL. А поставить чрут - 10-20 минут, при этом у тебя чистая система для сборки и gcc 4.4 из редхатовской ветки

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

>В нем и впрямь нет многопоточности? О_О

GIL же

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

> не факт, что пакеты, собранные под lenny, будут работать в CentOS/RHEL.

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

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

Для программирования for fun. Считаю его единственным вменяемым языком для этих целей.

Си? Нэ?

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

Синтаксис Pascal'я считаю самым вменяемым(разве что регистронезависимость напрягает, да). А begin/end, так у кого-то весьма странные фобии на этот счет... :)

Паскаля не помню но там что-то вроде

if a=b then
begin
...
end;

На си же это выглядит так

if (a==b){
...
}

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

На си же это выглядит так

Я знаю как это выглядит, т.к. на работе С++ юзаю :)

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

FreeBasic. Python + PyGame, но там уже чуть более высокоуровневая бадяга, зато больше фич вроде слоёв.

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

>при этом замену паскалю никто не подсказал, кроме тормозного питона. :)

давай угадаю. Тормозной си-диез? :)

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

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

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

>FreePascal - это как раз реализация Delphi со своими плюшками

Если что, FP умеет работать в разных режимах: совместимости с TP, совместимости с Delphi и в «родном» режиме. Задается либо ключом компилятора, либо через директиву {$MODE НУЖНЫЙ_РЕЖИМ}. Ещё, кажется, можно в конфиге прописать. ЕМНИП, по-умолчанию идёт как раз в режиме совместимости с TP.

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

В эти тонкости поддержки стандартнов не влезал, но я точно могу сказать, что когда я писал в FP там была поддержка как раз Delphi по-умолчанию.

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

> ТС использует паскаль для работы с графикой, а тут тормознутость питона как раз минус.

Для рисования кружочков, квадратиков, битмапов есть pygame, для всяких быстрых алгоритмов есть opencv. Что есть для pascal?

Я спокойно пишу import opencv и работаю с картинкой с вебкамеры в рилтайме. При реализации попиксельной работы цикл по всем пикселям, конечно, приходится выносить в модуль обрабатываемый JITом, но это очень небольшая жертва, учитывая что питон вполне осиливает 640×480 пикселей 15 кадров в секунду перелопачивать и без JIT, что-то с ними делая.

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

Я спокойно пишу import opencv и работаю с картинкой с вебкамеры в рилтайме.

Не о той графике думаешь... мне нужен OpenGL и Direct3D. Есть у него import direct3d? Еще я использую звук, и мне нужна многопоточность для этого дела... Я не знаю как у питона обстоят дела с такого рода задачами, но что-то мне подсказывает, что не очень, ввиду нераспротстраненности проектов такого плана :) И раньше я уже написал - я не хочу таскать с собой зависимость от всякой «левой фигни», вроде самого питона(хотя есть какая-то фигня вроде cpython для компиляции?).

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

>обычно для этого используют что-то с менее убогим синтаксисом. Пистон или руби например.

Не пойму, какой фан может быть в этих бесконечных begin..end.


А какой фан от отступов питона? Или фигоскобочек Ц?

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

>А какой фан от отступов питона? Или фигоскобочек Ц?

отступы нормальные люди все равно делают. А скобочки пишутся одним нажатием, в отличие от begin и прочих интуитивноПонятныхЛюбомуАнглоговорящемуБыдлуПаскалевскихКонструкций

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