LINUX.ORG.RU

Lazarus 1.6.4

 , ,


2

3

Вышла новая версия свободной кроссплатформенной среды разработки на языке Object Pascal. Данная версия собрана при помощи Free Pascal версии 3.0.2 (предыдущая использовала 3.0.0).

Данный релиз является корректирующим.

Lazarus по функциональности сопоставим с некогда популярной проприетарной средой разработки Delphi, однако является кроссплатформенным (поддерживает Windows, GNU/Linux, FreeBSD и macOS).

>>> Подробности



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

Да, система хорошая, недостаток один: ах, если бы она дошла до нынешнего состояния лет так 15 назад... Тогда большое количество дельфёвого кода не пришлось бы переписывать.

А теперь значительная часть тех, кому нужна была кроссплатформенность, уже давно убежали кто на Qt, кто ещё куда...

hobbit ★★★★★
()

Вариант первой программы на Паскале :-):

PROGRAM ONEPRO;

VAR A, B, C: INTEGER;

BEGIN

A:=1;

B:=2;

C:=A+B; WRITELN (C)

END.

anonymous
()

В моей домашней библиотеке есть книга:

К. Боон. Паскаль для всех. Пер с голл. В. С. Макарова. Москва, Энергоатомиздат, 1988. С рисунками. 190 страниц.

anonymous
()

А вот, кстати, по каким книгам (или другим материалам) хорошо изучать паскаль сейчас? Если с прицелом на fpc в качестве основного диалекта.

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

Было вроде, «Free Pascal и Lazarus: Учебник по программированию» - Библиотека ALT Linux. Я из сабжевого читал книгу по максиме - просто шикарная была.

Только вот смысла не имеет особого. Школьникам хватит и простейших основ, без дельфи-диалекта.

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

А я когда-то давным давно читал затертую книжку по ДОСу - и там были кусочки утилит на паскале - типо примитивного «антивируса», который для файлов чексумму проверял, или вывод таблицы кодов.

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

Мать 2-х программистов просит кого-то непсихованного обучить ее компьютеру.... :-)

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

Я из сабжевого читал книгу по максиме

А точно по максиме? Хотел найти, но нашлась только по scilab из математического.

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

Обалденная книжка была.

Была, есть и будет!!! :-)

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

Да, я тоже там нашёл только что. Но всё равно спасибо.

anonymous
()

Какие компании всем этим пользуются? Кто-то из присутствующих зарабатывает деньги программируя под Free Pascal?

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

зачем мне знать python если я им не пользуюсь? Javascript тоже с динамической типизацией, к слову.

а так - в пень, безусловно.

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

да, имеет. только начинать программировать на языках быстрого прототипирования / написания скриптов без статической типизации - наркомания. прямая дорога в непонимание как «оно» (собственный) работает и веру в то, что всё бесплатно на «современных системах».

dzidzitop ★★
()

что там у него с третьим гтк? хоть немного юзабльным стало?

anonymous
()

Позитивно. И не надо говорить что вот если бы 15 лет назад. Кому надо было - писали под нужные платформы на Turbo Pascal для дос, Virtual Pascal под os/2, делфи под Windows. Под линукс всё равно время жизни бинарных сборок минимально c этим вечным ломанием графических библиотек и тд. Тут особо упертые товарищи сидят готовые это терпеть, а не те кому просто надо написать программу и забыть о ней. А вообще кто ищет тот найдет. Вот вполне рабочие программы с GUI оказывается можно даже на Modula-2 писать (Stony Brook M2).

tommy ★★★★★
()

Я на этом Лазарус большой проект несколько лет назад делал. Под винду и линукс. Весьма удобно, если нужно чтото изменить в проекте многое делается мышкотыканьем. Можно программить сразу сидя рядом с заказчиком :)

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

eMKatic (эмулятор МК-152/МК-161/...) написан именно на Lazarus'е

Lazarus только что перешёл из разряда «ненужно» в «нужно». /s

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

сравнивать С, который по сути продвинутый ассемблер, даже с базовым Pascal'ем некорректно

Что такого есть в C от ассемблера, чего нет в Pascal?

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

Кому надо было - писали под нужные платформы на Turbo Pascal для дос, Virtual Pascal под os/2, делфи под Windows.

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

Позитивно.

Не спорю.

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

Что такого есть в C от ассемблера, чего нет в Pascal?

Если говорить о базовом Pascal, который не Turbo, не Object и т.д., то он значительно более оторван от архитектурно-машинных аспектов и вообще — язык чуть более высокого уровня, нежели C, что совершенно не странно, если вспомнить, что C создавался как средство для написания кода ОС, а Pascal — как академический учебный язык для студентов. Другой вопрос, что многие решения в дизайне Pascal спорны, но это на любителя.

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

Другой вопрос, что многие решения в дизайне Pascal спорны

Перечислите спорные решения. Интересно.

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

Было бы интересно узнать, какие и в чём.

Перечислите спорные решения. Интересно.

... но это на любителя.

Спорить о вкусах — пустая трата времени. Впрочем... Сугубо ИМХО:

-- стандартизация «де-факто» против вменяемых стандартов у С/С++ не есть хорошо и приводит к наличию версий и диалектов

-- begin end как ограничители блоков кода дольше набираются и хуже читаются в сложных конструкциях

-- отсутствие операторов изменения типа ++ — *= /= += -= и т.п. вынуждают писать лишний код value = value * 10; частично выручают inc и dec.

-- нет аналога тернарному ?: , что тоже вынуждает писать лишние if then begin end else begin end

-- нет аналога оператору следования "," — редко, но бывает нужно

-- отсутствие у оператора присваивания возвращаемого значения не дает писать цепочечные присваивания и использовать результат присваивания в выражениях типа if((value = tryGetValue()) != 0) { /* do something with value */ }

-- про возвращаемое значение функций уже писали, return при правильном использовании всё же позволяет писать более лаконичный и понятный код.

-- отсутствие break и continue в базовом варианте сильно усложняло логику циклов, впрочем, поправлено в диалектах

-- цикл for в стиле С/C++ куда гибче и не завязан исключительно на целочисленное итерирование, как for to/downto в Pascal

-- разделение на процедуры и функции совершенно излишне, представление о процедуре как функции без возвращаемого значения вполне себе адекватно описывает все различия

Впрочем, еще раз, всё перечисленное — сугубо на правах ИМХО, уверен, в любом языке есть недочеты дизайна, спорные решения и неудовлетворенные личные предпочтения. Не надо разворачивать бурную дискуссию о недостатках C/C++, я их прекрасно знаю.

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

-- отсутствие операторов изменения типа ++ — *= /= += -= и т.п. вынуждают писать лишний код value = value * 10; частично выручают inc и dec.

s+=i; s-=i; s*=i; s/=i; такое работает.
++ и — нет

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

s+=i; s-=i; s*=i; s/=i; такое работает.

диалектные расширения http://pascalabc.net/stati-po-pascalabc-net/osobennosti-yazika/23-prostejshie...

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

Не удивлюсь, если еще что-то из перечисленного выше неактуально для какого-то диалекта, но Pascal ли это? ;)

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

-- стандартизация «де-факто» против вменяемых стандартов у С/С++ не есть хорошо и приводит к наличию версий и диалектов

-- begin end как ограничители блоков кода дольше набираются и хуже читаются в сложных конструкциях

-- отсутствие операторов изменения типа ++ — *= /= += -= и т.п. вынуждают писать лишний код value = value * 10; частично выручают inc и dec.

-- нет аналога тернарному ?: , что тоже вынуждает писать лишние if then begin end else begin end

-- нет аналога оператору следования "," — редко, но бывает нужно

-- отсутствие у оператора присваивания возвращаемого значения не дает писать цепочечные присваивания и использовать результат присваивания в выражениях типа if((value = tryGetValue()) != 0) { /* do something with value */ }

-- про возвращаемое значение функций уже писали, return при правильном использовании всё же позволяет писать более лаконичный и понятный код.

-- отсутствие break и continue в базовом варианте сильно усложняло логику циклов, впрочем, поправлено в диалектах

-- цикл for в стиле С/C++ куда гибче и не завязан исключительно на целочисленное итерирование, как for to/downto в Pascal

-- разделение на процедуры и функции совершенно излишне, представление о процедуре как функции без возвращаемого значения вполне себе адекватно описывает все различия

Ты только что описал достоинства Pascal. Лучше не придумаешь.

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

хуже читаются в сложных конструкциях

не сложнее нагромождения скобок

отсутствие операторов изменения типа ++ — *= /= += -=

http://www.freepascal.org/docs-html/prog/progsu10.html

нет аналога тернарному ?:
отсутствие у оператора присваивания возвращаемого значения ... типа if((value = tryGetValue()) != 0)

Это те самые где обычно и ищут потом ошибки?

цикл for в стиле С/C++ куда гибче и не завязан исключительно на целочисленное итерирование, как for to/downto в Pascal

Такое сойдёт? http://www.freepascal.org/docs-html/rtl/objects/tcollection.foreach.html

разделение на процедуры и функции совершенно излишне

но при этом ничего плохого и неудобного в этом нет, даже наглядно

ааааа! моё время!

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

Ты только что описал достоинства Pascal. Лучше не придумаешь.

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

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

Бурную дискуссию может и не надо, но некоторые имхо высказать на твои имхо можно.

нет аналога оператору следования "," — редко, но бывает нужно

Когда оно бывает нужно в си? Только в for, и лишь потому что for так (нелепо) устроен.

if((value = tryGetValue()) != 0)

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

цикл for в стиле С/C++ куда гибче и не завязан исключительно на целочисленное итерирование, как for to/downto в Pascal

Потому что сишный for - лишь чуть подогнанный while. Выражается на паскале через while же (при этом паскалевый for на си превращается в кашу).

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

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

Это работает в Лазарус, в котором fpc. Будет ли работать в «другом» не знаю.

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

вменяемых стандартов у С/С++

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

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

http://www.freepascal.org/docs-html/prog/progsu10.html

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

Определись, расширения и диалекты — это хорошо или нет? Мне, например, в C++ стандарта за глаза хватает. Хотя кому-то расширение GCC, может быть, нужно, всё относительно.

Такое сойдёт? http://www.freepascal.org/docs-html/rtl/objects/tcollection.foreach.html

Конечно нет

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

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

Потопу что в Pascal'е это выливается в такое:

var value: integer;

{ куча кода, где value не используется }

value := tryGetValue; { Это присваивание из переменной или вызов функции без параметров? Полезли смотреть определение }

{ Ещё куча кода, который вставлен на 1001-й итерации рефакторинга }

if value <> 0 then begin { блин, а что ж там у нас в этой value и какого оно вообще типа? лезем перечитывать предыдущие 100500 строк кода }

end

rmammoth
()

Поставил: lazarus-1.6.4 lazarus-lcl-gtk2-1.6.4 lazarus-lcl-nogui-1.6.4 lazarus-lcl-units-1.6.4

При запуске lazarus в окошке просит указать путь к исходникам fpc. А где они?!

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

обычно в дебе ставишь: > lazarus fpc fpc-source, я не знаю какой у тебя там дистр, так что не знаю что тебе поставить. (у тебя там бсд?)

mul4 ★★★★★
()
Ответ на: комментарий от mul4
> pkg info -x lazarus
lazarus-1.6.4
lazarus-lcl-gtk2-1.6.4
lazarus-lcl-nogui-1.6.4
lazarus-lcl-units-1.6.4
> pkg info -d lazarus-1.6.4
lazarus-1.6.4:
	pango-1.38.0_1
	gtk2-2.24.29_3
	gtk12-1.2.10_25
	fpc-utils-3.0.2
	gdk-pixbuf-0.22.0_17
	lazarus-lcl-units-1.6.4
	lazarus-lcl-nogui-1.6.4
	lazarus-lcl-gtk2-1.6.4
	glib-2.46.2_4
	glib12-1.2.10_15
	gettext-runtime-0.19.8.1_1
	atk-2.18.0
> pkg info -x fpc
fpc-3.0.2
fpc-utils-3.0.2

В дистфайлах (приложение ставилось из портов) лежит архив с исходниками fpc-3.0.2.source.tar.gz

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

fpc-source/xenial,xenial 3.0.0+dfsg-2 all Free Pascal - SDK source code dependency package
fpc-source-3.0.0/xenial,xenial,now 3.0.0+dfsg-2 all [установлен, автоматически] Free Pascal - SDK source code

У меня вот так, могу предположить что fpc-utils-3.0.2? ну как вариант... кстати там еще LCL требуется, когда первый раз запустишь, то может спросить, и еще я заметил что, например, в кальке пришлось доустановить gdb (ну вот не подтянулось)

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

У меня вот так, могу предположить что fpc-utils-3.0.2?

Там исходников RTL нет:

% pkg info -l fpc-utils-3.0.2
fpc-utils-3.0.2:
	/usr/local/bin/bin2obj
	/usr/local/bin/data2inc
	/usr/local/bin/delp
	/usr/local/bin/fpcjres
	/usr/local/bin/fpclasschart
	/usr/local/bin/fpcres
	/usr/local/bin/fpcsubst
	/usr/local/bin/fpdoc
	/usr/local/bin/fppkg
	/usr/local/bin/fprcp
	/usr/local/bin/h2pas
	/usr/local/bin/h2paspp
	/usr/local/bin/instantfpc
	/usr/local/bin/makeskel
	/usr/local/bin/makeskel.rsj
	/usr/local/bin/mkinsadd
	/usr/local/bin/pas2fpm
	/usr/local/bin/pas2jni
	/usr/local/bin/pas2ut
	/usr/local/bin/plex
	/usr/local/bin/postw32
	/usr/local/bin/ppdep
	/usr/local/bin/ptop
	/usr/local/bin/ptop.rsj
	/usr/local/bin/pyacc
	/usr/local/bin/rmcvsdir
	/usr/local/bin/rstconv
	/usr/local/bin/unitdiff
	/usr/local/lib/fpc/3.0.2/fpmkinst/x86_64-freebsd/utils-lexyacc.fpm
	/usr/local/lib/fpc/3.0.2/units/x86_64-freebsd/utils-lexyacc/lexlib.o
	/usr/local/lib/fpc/3.0.2/units/x86_64-freebsd/utils-lexyacc/lexlib.ppu
	/usr/local/lib/fpc/3.0.2/units/x86_64-freebsd/utils-lexyacc/yacclib.o
	/usr/local/lib/fpc/3.0.2/units/x86_64-freebsd/utils-lexyacc/yacclib.ppu
	/usr/local/lib/fpc/lexyacc/yylex.cod
	/usr/local/lib/fpc/lexyacc/yyparse.cod

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

Пришлось распаковать исходники fpc из архива fpc-3.0.2.source.tar.gz в домашний каталог и указать IDE их использовать. Вроде запустилась.

P. S. lazarus собирал с выключенной опцией GDB.

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

На проекте с визуальной формой и кнопкой пишет: «Компиляция пакета LazUtils 1.0: Код завершения 256, ошибок: 1 lazutf8.pas(194,3) Fatal: Невозможно найти gettext, используемый в LazUTF8 пакета LazUtils.» в секции модуля LazUTF8:

 implementation

uses
  gettext
{$IFDEF Darwin}, MacOSAll{$ENDIF}
  ;
(подсвечена строчка с gettext)

И чего?

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

а не знаю))
у меня версия 1.6.2, я не буду пока переходить на 1.6.4 там где-то писали выше что ошибка есть какая-то

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

вот, загрузил даже 7, посмотреть что там будет, у меня нет gettext, все нормально компилится

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