LINUX.ORG.RU

Вышел FreePascal 2.4

 , ,


0

0

FreePascal — это кросс-платформенный, свободный компилятор и библитека RTL языка pascal.

Добавлены новые платформы:

  • 64-бит Mac OS X (x86_64/ppc64)
  • iPhone (Mac OS X/Arm)
  • Haiku
  • Улучшена поддержка ARM EABI

Некоторые изменения:

  • файл ppc386.cfg больше не используется;
  • переменные Absolute теперь поддерживаются;
  • добавлено выравнивание для переменных типа record;
  • добавлены типы Byte/Word/Long/Qwordbool;
  • все старые модули сокетов для версии 1.0.x были удалены.

User changes

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

★★★★★

Проверено: Shaman007 ()
Последнее исправление: alexsaa (всего исправлений: 3)

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

> Нэ?

Не. Пример из моей личной практики: как например, сделать (анкорами да алайнами) что-то вроде таблицы, т.е. например, чтобы 2 панельки делили расстояние по горизонтали ровно пополам, и сохраняли это соотношение автоматически при ресайзе окна? Ну и аналогичное для 3х, 4х панелек, ну и по вертикали тоже :)

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

> Use Anchor Manager, Luke ^_^

Я написал про якоря в первом же посте.

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

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

В xUSSR.

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

> К тому же - не верю, что нет 64 битной дельфи.

Нативной --- нет.

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

> Я сужу по учебному пособию «компьютерная геометрия и алгоритмы машинной графики» для ВТУЗ-ов - там хотя и листингов нет, но автор говорит что студенты курсовые работы ему на MathCAD-е сдают. А там все 3D.

Автор пособия --- тонкий тролль, очевидно.

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

> У меня в университете:

1-ый семестр - ANSI C

2-ой семестр - Haskell


3-ий и 4-ый семестр - OOP с использованием Java (использование unit test'ов, VCS)



А что это за университет? Но что-то вы быстро прошли списки и очереди в сишном исполнении...

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

anonymous> А Вы когда на Qt пишете. Qt Designer из принципа не используете?

Мне достаточно выставление элементов GUI через код. Безо всяких мышевонючих IDE.

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

>Там написано, что будет только опенсорсный GUI. Но не сам скайп

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

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

kss> Ты его сообщения почитай (не только в этой теме), они на 90% — агрессивное хамство.

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

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

anonymous> Вы идиот, или так умело им прикидываетесь? Ну тогда вернитесь к исходному сообщению, и читайте его до просветления. Именно о клиентах скайпа там и шла речь, о GUI. Реализация алгоритмов и серверной части вообще никаким боком к текущему обсуждению не относится.

Клиентская часть - это не только GUI. И алгоритмы и протокол - это тоже на стороне клиента должно поддерживаться. Или ты не в курсе, что скайп при сохранении p2p умеет даже NAT обходить?

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

>Клиентская часть - это не только GUI. И алгоритмы и протокол - это тоже на стороне клиента должно поддерживаться. Или ты не в курсе, что скайп при сохранении p2p умеет даже NAT обходить?

В курсе, только это ничего не меняет. Есть закрытый клиент под Windows, написанный на Delphi? Есть. Клиент под Linux в ближайшем времени станет опенсорс, возможно, использующий некоторые закрытые по лицензионным и иным соображениям либы. Линуксовый клиент скайпа в этой теме вообще оффтопик, поскольку всплыл после того, как один «умник» усомнился в том, что в его линуксе работает программа на Delphi. Именно Delphi и, соответственно, Windows-клиент Skype был предметов обсуждения, но всегда найдется тролль, которому лишь бы ляпнуть не по теме. Ты что сказать-то хотел?

anonymous
()

КРОССПЛАТФОРМЕННОСТЬ + КРОССКОМПИЛЛЯЦИЯ

Сразу, без костылей.

ip1981 ☆☆
()

ЛОР как почитаешь, так тут каждый второй втихую, чтобы никто не видел, открывает паскаль и пишет программки, оборачиваясь на каждый шорох, чтобы никто не запалил. А в толпе троллей кричат что паскаль не нужен и УГ

anonymous
()

Тонкий вброс:

* Паскаль:

- Класс: императивный язык среднего уровня абстракции.
- Производительность: как правило заметно хуже, чем у C. Хорошие компиляторы отсутствуют.
- Структуры данных: реализация лучше, чем в C, но большинство недостатков
совпадает. Так же нет сборки мусора, существуют указатели, невозможна реализация хуков (указателей на функции в структурах).
- Возможность интерпретации: отсутствует
- Переносимость: практически отсутствует. Hет признанного стандарта языка,
все компиляторы реализуют свой собственный диалект. Абсолютно отсутствуют
стандартные runtime библиотеки.
- Hадежность: выше, чем у C, за счет несколько более строгой модели типов,
но тоже ниже допустимого для крупных проектов.
- Резюме: на фиг не надо этих паскакалей.

© V.S. Lugovsky

А давайте, может, сразу тогда определимся: для решения каких задач следует использовать сабж (к дельфям тоже относится)? По ответу сразу всё встанет на свои места :)

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

Производительность - ниже, да. Память использует экономней, тоже да ^_^

Структуры данных - ну вот как-то не приходится пользоваться указателями при работе... В смысле, вручную указывать - где @, а где ^.

Интерпритация - pascal script - нэ?

Переносимость: Вы вообще новость читали? 0.о

Из плюсов лично для меня - LCL (та же VCL, только кроссплатформенная), кросскомпиляция мышкой (хотя повозиться с make'ами интерфейсов сначала приходится, но зато потом ^_^), синтаксис, типизация.

З.Ы. А что никто ещё не вспомнил бинарников в 17 мб? 0.о

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

> Дальше по образу и подобию ^_^

Ну признавайтесь, как сделали, мне не троллинга ради, когда у меня такая задача стояла, пришлось обработчик OnResize вручную сочинять.Правда, это было в BCB6 /* свист и улюлюканье в зале */

> З.Ы. А что никто ещё не вспомнил бинарников в 17 мб? 0.о

Про бейнарники в 17 мегабайт мы в прошлый паскалесрач говорили, по моему, с вами же, так что [:]||||[:] :)

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

Если признаюсь, будет слив T_T Кладется третья форма, делается в Anchor Manager выравнивание по центру формы и размер 0. Две другие, тем же Anchor Manager'ом прилепливаются к краям этой третьей формы. В итоге - форма ресайзится, третья форма выравнивается по середине, а две другие - дополняются до неё ^_^ Криво, но работает ^_^ В реальности подобная задача не возникало - всегда обходился чем-то вроде Panel1.Align := alLeft; Panel2.Align := alClient;

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

> Про бейнарники в 17 мегабайт мы в прошлый паскалесрач говорили, по моему, с вами же, так что [:]||||[:] :)

Эм... я в танке, до чего договорились? У меня опция -Xs почему-то не работает и бинарники все равно 17мб, ЧЯДНТ?

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

Давайте всё же определимя для каких целей будем его использовать, ага?

Производительность - ниже, да. Память использует экономней, тоже да ^_^

Если паскакаль использовать по аналогии ANSI C, то произодительность важна, но я сомневаюсь, что Вы так делаете. Поэтому пока производительность в сторону.

Структуры данных - ну вот как-то не приходится пользоваться указателями при работе... В смысле, вручную указывать - где @, а где ^.

Просвятите тогда чем Вы пользуетесь при создании всяких там словарей, деревьев и прочих множеств (только пожалуйста нормальных множеств, а не убогих set-ов). И да, если язык метит в высокоуровневые (что-то я там про ООП слышал), пройдите в тред, где ручное управление памятью соснуло у GC.

Интерпритация - pascal script - нэ?

Познакомьтесь с лиспом, ね

Из плюсов лично для меня ... синтаксис, типизация.

Вы ещё сюда модульность забыли добавить, наверное :) Посмотрите на ML (OCaml как диалект) - вот пример нормальной и модульности и типизации и, в принципе, ООП. Ну синтаксис не является каким-либо показателем, да и это всё сугубо индивидуально - мне, например, безумно нравится синтаксис лиспа.

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

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

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

> Эм... я в танке, до чего договорились?

Не помню. Это давно было. Помню только - дело было вечером, делать было нечего..

> У меня опция -Xs почему-то не работает и бинарники все равно 17мб, ЧЯДНТ?

Не используете strip, который в моем случае обкарнал дефолтный проект с 19 МБ до анорексичных 3,5.

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

эм...

Type BTreeItem = Class

...

Property Parent: BTreeItems Read bParent;

Property Children: TList Read bChildren;

Constructor Build(Const aParent: BTreeItem);

...

Как-то так ^_^ Указатели внутри, безусловно, используются, но, как уже писал, _я_ никаких ^ (кроме как в комментариях ^_^) не использую :-D В треды с GC я проходить не хочу - мне хватит срамных картинок с http://shootout.alioth.debian.org/ про java ^_^ С лиспом знакомится как-то тоже - никакого желания ^_^ Про производительность - пишу обычные десктопные приблуды ^_^ наши люди, правда выдержавшие 1С, пока не жаловались ^_^ Плюс что-то вроде OLAP анализатора для данных из той же 1С. Играться с результатом, опять же, не напряжно, при всей умирающности в нашей сетке. Правда под gcc переписывать как-то не приходилось, пока, так что сравнивать особо не с чем, но, повторюсь, производительность лично меня устраивает. За плюшки в виде LCL я готов ею пожертвовать в каких-то разумных пределах ^_^

Да, и, кстати, визуальная скорость работы _ОЧЕНЬ_ зависит от ключей оптимизации при компиляции. А как там делали на shootout я не знаю.

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

А что это за университет?

СПбГУ (черт, скоро до деанонимизации дело дойдет ;)).

Но что-то вы быстро прошли списки и очереди в сишном исполнении...

В 1-ом семестре на C писали: списки, стеки, длинную арифметику (на списках), стековый калькулятор (RPN), калькулятор (infix), работу с файлами, сортировки (quick sort, heap sort, merge sort), представление floating point чисел.
С segmentation fault'ами, heap corruption'ами за семестр наиграться успел.

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

Ты компилируешь с отладочной информацией. Если используешь Lazarus - заходишь в Проект -> Свойства компилятора и на вкладке Связыванием убираешь всё, что связано с отладкой ^_^ Заодно можешь поставить «Умное связываение» и оптимизацию на соседних вкладках. Для «релизных» версий делаю так ^_^

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

невозможна реализация хуков (указателей на функции в структурах). ойвей!

{$apptype console}
{$mode objfpc}
{$h+}
type
	Int = Integer;
	TFunc = function(x: int): int;
	TRec = record
		foo: TFunc;
	end;
function Square(x: int): int;
begin
	result := x*x;
end;

var z: TRec;
begin
	z.foo := @Square;

	writeln(z.foo(5));
end.

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

Да, кстати... Единственный случай, когда @ всё-таки пишу - это передача функции... Ещё в Synchronize(@myfunc) для TThread'ов

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

Мде) Я думал на все хватит галки «вырезать символы из исполнимого файла (-Xs)». Оказывается еще надо снять галку «выдавать номера строк в ошибках времени исполнения (-gl).

Недочитал Faq, сорри :)

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

> Мне достаточно выставление элементов GUI через код. Безо всяких мышевонючих IDE.

Тяжело вам наверное. Иметь под рукой столько удобных GUI инструментов и не использовать их. Qt Linguist, Qt Designer очень удобны, попробуйте их. После того как вы их освоите, производительность вашего труда только возрастёт.

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

Да, прошу прощения это я для Quasar писал

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

Вот мне в связи с этим интересно, как же на паскале принято передавать в функцию матрицу MxN, где M и N выясняются по ходу выполнения программы?

module Matrices;

export Matrices = ( Matrix, Add_Matrix );

type Matrix( N, M : Integer ) =
                        array [ 0 .. N - 1, 0 .. M - 1 ] of Real;

procedure Add_Matrix( var x : Matrix; protected y : Matrix );

end;



procedure Add_Matrix( var x : Matrix; protected y : Matrix );
var
    i : Integer;
    j : type of i;
begin
    for i := 0 to x.N - 1 do
        for j := 0 to x.M - 1 do
            Inc( x[ i, j ], y[ i, j ] );
end;

end.

Так?

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

Я же уже писАл!
[code=pascal]

type

T2DimArray = record
data: array of integer;
M,N: integer;
end;

procedure T2DimArray_Init(M,N: integer; var a: T2DimArray);
var
i: integer;
begin
setlength(a.data, M*N);
for i:=0 to M*N-1 do a.data[i]:=i;
a.M:=M;
a.N:=N;
end;



procedure T2DimArray_Print(var a: T2DimArray);
var
i,j: Integer;
begin
writeln('Printing');
for i:=0 to a.N-1 do
begin
   for j:=0 to a.M-1 do write(a.data[i*a.M+j],' ');
   writeln('-');
end;
end;

var
A: T2DimArray;
begin

T2DimArray_Init(20,10,A);
T2DimArray_Print(A);
end.
[/code]

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

Я же уже писАл!


type 

T2DimArray = record
    data: array of integer;
    M,N: integer;
end;

procedure T2DimArray_Init(M,N: integer; var a: T2DimArray);
var
 i: integer;
begin
  setlength(a.data, M*N);
  for i:=0 to M*N-1 do a.data[i]:=i;
  a.M:=M;
  a.N:=N;
end;



procedure T2DimArray_Print(var a: T2DimArray);
var
 i,j: Integer;
begin
    writeln('Printing');
    for i:=0 to a.N-1 do
    begin
	for j:=0 to a.M-1 do write(a.data[i*a.M+j],' ');
	writeln('-');
    end;
end;

var
 A: T2DimArray;
begin

    T2DimArray_Init(20,10,A);
    T2DimArray_Print(A);
end.

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

Или как вариант:

{$apptype console}
{$mode objfpc}
uses sysutils;
type M = array of array of integer;

procedure Test(arr: M);
var i,j: integer;
begin
	for i:=0 to length(arr)-1 do begin
		for j:=0 to length(arr[i])-1 do begin
			write(arr[i,j]);
		end;
		writeln;
	end;
end;


var
	a: M;
begin
	setlength(a, 10, 20);

	test(a);
end.

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

Как с куста. Убрать директиву {$mode} только надо. Да и uses для примера нафик не нужен

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

Работает и в Delphi, без опции mode.

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

anonymous> Клиент под Linux в ближайшем времени станет опенсорс, возможно, использующий некоторые закрытые по лицензионным и иным соображениям либы.

Якобы открытый клиент, использующий закрытые библиоетки нафиг не нужен. Пусть уж весь клиент тогда будет закрытым.

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

mix_mix> А давайте, может, сразу тогда определимся: для решения каких задач следует использовать сабж (к дельфям тоже относится)? По ответу сразу всё встанет на свои места :)

Если расставление кнопочек и связывание их событиями - тут и бэйсик сгодится. Но для серьёзных целей как самостоятельное средство - ни-ни.

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

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

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

Итого: паскаль язык неплохой, но не для нашего времени и не для серьёзных применений. Паскаль в своё время был довольно простым в освоении (почти как бэйсик), но при этом позволял решать задачки, уровень сложности которых не оправдывался применением бэйсика. Ну а популярным паскаль стал в диалекте ТурбоПаскаль. Borland сделала в своё время IDE, позволяющую сильно экономить время при использовании паскаля.

Если кратко - паскаль уже не нужен. Есть более подходящие средства.

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

>Или как вариант...

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

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

Как они реализованы в delphi, меня нисколько не интересует.

Да и доводилось мне однажды делать связку Delphi Win32 DLL + .NET - передавать / возвращать числовые вектора и матрицы... Ничего особо сложного: маршаллер в 20 строк - это глобально и надежно )))

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

Ну и есть куча других современных средств и языков на любой вкус. Так может в этой «куче» и есть ниша паскакаля? :)

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

>Да и доводилось мне однажды делать связку Delphi Win32 DLL + .NET - передавать / возвращать числовые вектора и матрицы... Ничего особо сложного: маршаллер в 20 строк - это глобально и надежно )))

Как же можно делать маршалинг, если

Как они реализованы в delphi, меня нисколько не интересует.

:D

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