LINUX.ORG.RU

Статья о Free Pascal и Lazarus


0

0

В статье Joost van der Sluis (перевод А.Тарасова) "Кросс-платформенная разработка с Free Pascal 2.2.0" рассказано о недавно вышедшем компиляторе языка Pascal (FPC) версии 2.2.0. Этот продукт сегодня является одним из самых примечательных компиляторов с открытым кодом. Каждый день все больше программистов узнают о FPC и начинают разработку своих приложений на Object Pascal. Особенно этому благоприятствует развитие Lazarus, графической среды разработки для FPC, которая содержит расширенный набор средств для разработки графических приложений.

>>> Перевод

Рекламная брашурка и не более!

Компилятор у него конечно хорошь, а вот GUI отстой. Лучше бы они сделали нормальные бинды к GTK+ и QT !!

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

>Паскаль - это выражаясь современным языком, форк Алгола.

Если рассматривать _такую_ степень подобия, то сегодня почти всё - форк Алгола :D

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

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

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

И только один из этих форков глобальный и надёжный.. :D

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

>А Паскаль (и ObjectPascal тем более) по всем позициям ужасный язык: за один только конфликт между вызовом функции без параметров и получения адреса этой функции разработчиков поубивать бы.

Да ну?
someFunc - вызов
someFunc() - вызов
@someFunc - адрес

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

>Потому, что я общался с некоторыми из них, и наслышан о многих еще. Они даже паскаль свой не знают как следует - чего стоит хотя бы "uses crt" в программе, работающей в графическом режиме.

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

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

> Мне нравится Паскаль, это мой второй язык. У меня остались программы на нём.

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

Пас застрял между нижним и средним уровнем. На нижнем есть C, который де-факто стандарт. На среднем уровне, для тех кому не нравится жаба/дотнет, недавно появился D - который делает ненужным и пасквиль, и C++ разом.

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

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

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

> за один только конфликт между вызовом функции без параметров и получения адреса этой функции разработчиков поубивать бы.

Кстати, Ruby за это тоже ссаной тряпкой по жопе.

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

> Неаа даю подсказку это самый любимый и самый тру язык на лоре.

Брэйнфак? Лисп? Русский матерный?

Кстати, хорошая тема для опроса.

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

> недавно появился D - который делает ненужным и пасквиль, и C++ разом.

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

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

> все выгоды языка каким бы крутым по возможностям он не были, нуждается в компиляторе, а он пишется лет 10,

Почти угадали. Разработка языка началась в 99 году, релизная официальная версия компилятора вышла в январе 2007. Сейчас в разработке вторая версия, альтернативная стандартная библиотека Tango, и много чо ещё (см. dsource.org). Есть и свободная версия компилятора, GDC.

Так что с компилятором вопрос решён. Библиотек пока не особо много, но достаточно богатая stdlib и бинарная совместимость с сями открывает достаточно обнадёживающие перспективы.

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

>> Эта вопиющая избыточность (один then чего стоит).

>Brainfuck - ваше фсё?

Нет, наше все это Кобол


000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID. HELLOWORLD.
000300
000400*
000500 ENVIRONMENT DIVISION.
000600 CONFIGURATION SECTION.
000700 SOURCE-COMPUTER. RM-COBOL.
000800 OBJECT-COMPUTER. RM-COBOL.
000900
001000 DATA DIVISION.
001100 FILE SECTION.
001200
100000 PROCEDURE DIVISION.
100100
100200 MAIN-LOGIC SECTION.
100300 BEGIN.
100400 DISPLAY " " LINE 1 POSITION 1 ERASE EOS.
100500 DISPLAY "Hello world!" LINE 15 POSITION 10.
100600 STOP RUN.
100700 MAIN-LOGIC-EXIT.
100800 EXIT.

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

Заканчивайте ругать Паскаль.
Каждому, как говориться, свое.
Хотя действительно в нем есть всякие "лишние" слова типа then/begin/end, ОДНАКО это вообще-то улучшает читаемость для __неподготовленного__ человека.

Я помню когда-то давно в универе увидел строчку на Сях, тогда я знал тока Паскаль, и я в ней НЕФИГА непонял, потому что раньше я не видел Сей. Щас я правда на сях пишу =) ибо это то, что надо для меня. Так вот я про то, читаемость кода лучше оценивать по отношению к неподготовленному человеку. И у Паскаля она __объективно__ лучше, чем у сей.

Фраза "Паскаль отстой" примерно эквивалентна "У тебя такие отстойные зеленые носки, ФУ, ненавижу зеленый" -- другими словами -- каждому свое.

:)

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

> Я не понял как разработка языка коррелирует с разработкой компилятора под него

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

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

> Так вот я про то, читаемость кода лучше оценивать по отношению к неподготовленному человеку. И у Паскаля она __объективно__ лучше, чем у сей.

Это безусловно хороший параметр. Но языки более высокого уровня (примеры - Python, Ruby, Basic) по этому критерию уделывают паскаль как млоденца. А низкий уровень сегодня - это ниша достаточно специфичная, туда уже опытные люди идут, они C осилят.

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

> >Хотя бы s/%%(.*?)%%/$1/gee

> Библиотеку поддержки регулярных выражений никто не отменял. uses regexpr и вперед

Ну давай, продемонстрируй аналог на Паскакале. Оч. интересно.

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

Кстати, если говорить по теме, то новый FPC приятно удивил тем, что пара простых окон на winapi в собранном виде весят теперь что-то вроде около 64K, в то время как раньше это было 150K.Хотя все равно не дотягивает до нескольких кбайт, которые эти окна весят на самом деле (собранные на сях к примеру или в FreeBASIC или в asm).

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

>Хотя все равно не дотягивает до нескольких кбайт, которые эти окна весят на самом деле (собранные на сях к примеру или в FreeBASIC или в asm).

Не используй стандартную CRT

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

>> >Хотя бы s/%%(.*?)%%/$1/gee

> Ну давай, продемонстрируй аналог на Паскакале. Оч. интересно.

+1

Для облегчения понимания сути задачи могу представить версию на питоне:

import re, sys
s = sys.stdin.read()
for mo in re.finditer('%%(.*?)%%', s):
    s = s.replace(mo.group(0), str(eval(mo.group(1))))
print s

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

>Ну расскажи где при написании прикладных программ (а не модулей ядра и не веб-сервера) столь нужно явное использование классических указателей.

Любая прикладная программа, использующая libc. Man (3C).

Sun-ch
()

>Читать умеем ? Разница для 2.0.4 версии, нынешний компилятор значительно уступает только в одном тесте, а по экономии памяти - рвет почти везде... Хотя, смотря на OO, FF и Висту потребление оперативы "настоящие программисты", использующие яву не учитывают...

Во-первых FF не написан на джава, он ее лишь поддерживает. Разницу между этими двумя вещами узнаете в гугле Во-вторых в OO 90% - C++ Ну насчет Висты позвольте просто промолчать)

И просветите - за счет чего программы писаные на xPascal кушают меньше памяти? У них строки меньше весят? Или они пакуют как-то хитро? Или там революционный механизм сжатия/распаковки данных в рантайме?

>С выше уровнем паскаля 0.0 Приведите, пожалуста, пример, где одна строчка языка "уровнем выше" приводит к 2 страницам паскалевского кода?

Про регекспы уже сказали, std::for_each( data.begin(), data.end(), std::cout << std::setw(4) << _1 << std::flush ); может не две страницы, но вот 30-40 строчек - 100%

>Предлагаю всем "знатокам" тру языков достачно простенькую классическую задачку на сообразительность - програмка должна вывести свой собственый исходный код не пользуясь вводом и прочими ухищрениями 8). 99.99 % кинутся в гугл...и будут гордо потом бить себя пяткой в грудь... 8)

куайны? В википедии посмотрите, при чем тут продакшн программы?

>Развели флейм... Кто из вас, ругающих паскаль (Delphi), написал что-то более-менее серьезное на С/С++/C#/Java и т.д. ?

Я, например. Послужноё список показать? И паскаль не уважаю, хоть и писал несколько лет на Дельфях пока на С++ не перешел и преподавал Паскаль в школе. Неудобный, многословный язык, с системой типизации подобной смирительной рубашке.

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

>А если пожертвовать читабельностью, то даже вот так:

>import re, sys; print re.sub('%%(.*?)%%', lambda x: str(eval(x.group(1))), sys.stdin.read())

Мусье знает толк в извращениях :) Вменяемый человек никогда так писать не будет, если пишет он для людей.

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

>>А если пожертвовать читабельностью, то даже вот так:

>>import re, sys; print re.sub('%%(.*?)%%', lambda x: str(eval(x.group(1))), sys.stdin.read())

>Мусье знает толк в извращениях :) Вменяемый человек никогда так писать не будет, если пишет он для людей.

Скажи это лектору по высшей математике.

Absurd ★★★
()

А что все ноют про какое-то сферическре 30% отставание?

Какое бы оно ни было, это проблема не паскаля, а кодогенератора конкретного компилятора.

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

>>Мусье знает толк в извращениях :) Вменяемый человек никогда так писать не будет, если пишет он для людей.

>Скажи это лектору по высшей математике.

Будто он сам не знает )))

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

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

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

Распечатывает содержимое коллекции данных, причём в случае если тип данных коллекции - числовой и очередное выводимое значение меньше четырёх знаков - то оно будет добито нулями, а после вывода каждого из значений будет выполнен сброс буфера (принудительный вывод на экран)

zabivator
()
Ответ на: комментарий от Sun-ch

> Любая прикладная программа, использующая libc.

Таким образом, паскалевские программы сюда не попадают? ;)

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

>>>Мусье знает толк в извращениях :) Вменяемый человек никогда так писать не будет, если пишет он для людей.

>>Скажи это лектору по высшей математике.

>Будто он сам не знает )))

Не учишь МатАн - пойдешь на метан (С)

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

"возьми меня море и **** об скалы:
как мне надоели все эти интегралы" [(Ц) жисть]

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

>> Любая прикладная программа, использующая libc.

> Таким образом, паскалевские программы сюда не попадают? ;)

Ага они с ядром телепатемами обмениваются ;-)

Я повторю, процессоры работают указателями, язык без указателей - априори быдоязык, для очень ограниченного применения. Попытка Pascal избавиться от этого ограничения - ObjectPascal это только костыль, не вписавшийся и являющимся не очень умным подражанием C++ где это всё родное.

Про D убило отсутсвие static_cast и const и это: D is a systems programming language. Its focus is on combining the power and high performance of C and C++ with the programmer productivity of modern languages like Ruby and Python. Special attention is given to the needs of quality assurance, documentation, management, portability and reliability. Эк замахнулись, чтобы не потрескалось бы. При этом все надеюсь знаете, что любой отказ от const, volatile и тд упрощает систему на порядки (кибернетика однако) то есть язык может и проще, а вот выразительности меньше, нужен более мощный AI в компилере для вычитывания мыслей программиста.

alx_me ★★☆
()
Ответ на: комментарий от Sun-ch

Можно сгенерировать машинный код, который будет работать с указателями. Собственно, именно паскалисты таким (генерированием непосредственно машинных низкоуровневых команд) баловались ищщо под MS-DOG.

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

> Я не знаю паскаль вообще, но без работы с указателями, использование функций libc напрямую невозможно.

Да забудте про libc у них libpas, дело в системных вызовах которые без указателей - суть мистификация :-)

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

> Можно сгенерировать машинный код, к... не можно, а по другому нельзя ;-). ну если это не лабораторная по маш языку а реальная программа хотя бы поиска подстрок в строках.

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

Блин а ПаскаКАЛЛь то от верии к версии менялся, как и Quick/Visual Basic.

Что Турбо, что Борланд, что Делфи, что Делфи.Нет.

Только для коммерческой разработки он Visual Basic давно проиграл...

А Си/Си++/С# - стандартизированные языки

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

У вас регистров не хватит без указателей работать :-P

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

> А Си/Си++/С# - стандартизированные языки

ага ждём c++0x сппох ;-) iso14882

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

> А теперь 3 проекта на ObjectPascal, известных не только вам (сам FPC не считается).

Fast Report что то делал на ObjectPascal. Если память мне не изменяет.

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

название Ada и словосочетание Аэро-космическая отрасль тебе что-нибудь говорят?
ну и до кучи ещё Oracle+PL/SQL

истопник хренов...

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

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

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

>название Ada и словосочетание Аэро-космическая отрасль тебе что-нибудь говорят?

WxWorks для Spirit/Opportunity написан на Паскале?

>ну и до кучи ещё Oracle+PL/SQL

Oracle написан на С. PL/SQL похлж на Паскаль только на уровне begin/end

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

А чего там, под Адой удобно писать? Вот меня он напряг - испугался, много БУКВ. Вот в C++0x тоже будут программные потоки.

alx_me ★★☆
()

Паскалю respect, для начинающих имхо очень хорош

я двигался так: BASIC(ZX-Spectrum) - Borland Pascal - C++

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