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)

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

> Лично мне было ясно, что дельфи - тупик, еще когда я посмотрел 5-ю версию. Поэтому, я никогда не тратил сил на ее изучение. Правда я неоднократно слышал утверждения, что вот 3-я дельфи была о-го-го. Может быть и так.

Мне 5-я больше нравилась.

Но, наверно, самой фундаметнальной ошибкой было заигрывание с .NET'ом. После этого, вся борландовскя линейка подписала себе смертный приговор.

Здесь, пожалуй, соглашусь.

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

Не ниасилил, а не стал использовать. Автор я.

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

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

* Странная манера дискуссии: подразумевая один язык эталонным (ML/Haskell/etc..) требовать в другом языке другого поколения тех же фич и на основании их отсутствия объявлять его говном. «Мне? Однобортный мундир? Вы знаете, что в однобортном уже никто не воюет? Мы не готовы к войне!» (c) «Барон Мюнхгаузен»

В те времена, когда разрабатывался собственно паскаль и его последователи, перечисленные тобой вещи находились очень далеко от мейнстрима. А *математический* аппарат для вывода типов, вроде вообще сделали только в конце 80-х годов.

таки более чем 50-тилетнему лиспу это не мешает...
+ вот тут: http://ru.wikipedia.org/wiki/Вывод_типов подробнее, с датами...

По ссылке написано:

И, наконец, в 1985 г. Луис Дамас окончательно показал, что алгоритм Милнера является законченным и может использоваться для полиморфных типов.

Вот Вирт-то в 69-ом лоханулся. Также интересно получить ссылки на вывод типов в Лиспе образца 1958-го. Также интересно, почему Вирт должен был его встраивать. Это конечно приятная штука, но ведь не панацея, не?

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

Все приведенные тут аргументы подходят не только против Паскаля, но и против Си и кучи других императивных языков. Много где нет, паттерн-матчинга, замыканий и т.д. Тогда надо вычищать всю эту императивную дрянь. Можно начать с /usr/src/linux, а то там просто рассадник...

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

> Вот Вирт-то в 69-ом лоханулся. Также интересно получить ссылки на вывод типов в Лиспе образца 1958-го. Также интересно, почему Вирт должен был его встраивать. Это конечно приятная штука, но ведь не панацея, не?

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

Все приведенные тут аргументы подходят не только против Паскаля, но и против Си и кучи других императивных языков. Много где нет паттерн-матчинга, замыканий и т.д.

но паскаль примитивней и невыразительней большинства из них

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

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

О да, ленивые вычисления, карринг, ... - это так органично встраивается в Паскаль, получился бы замечательный язык:) Саймон Пейтон-Джонс бы в управдомы переквалифицировался...

но паскаль примитивней и невыразительней большинства из них

Без конкретики это пустые слова. Чем он хуже Си, чтобы недалеко ходить?

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

>на основании их отсутствия объявлять его говном

Не говном, а, как минимум, морально устаревшим.

Сливаем в разы по производительности и на порядки по памяти.


К сожалению, реальной картины эти тесты не отражают.

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

> О да, ленивые вычисления, карринг, ... - это так органично встраивается в Паскаль, получился бы замечательный язык:) Саймон Пейтон-Джонс бы в управдомы переквалифицировался...

в CL/Scheme же органично вписываются, хотя изначально там их нет...

Без конкретики это пустые слова. Чем он хуже Си, чтобы недалеко ходить?

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

хотя некоторые вещи из Си ему бы не помешали, например возможность объявлять локальные переменные по месту их использования, а не где-то в секции var, отсутствием операторов +=, *=, -=, /=, ?:

это мелочи, но с ними удобнее, чем без них.

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

>Не говном, а, как минимум, морально устаревшим.

Повторюсь: почему же Си не выбрасываем на свалку истории? Чем-то качественно лучше? «+=» есть? :))

К сожалению, реальной картины эти тесты не отражают.

А что отражает и что такое «реальная картина»?

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

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

пиздец какой моветон :(

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

>хотя некоторые вещи из Си ему бы не помешали, например возможность объявлять локальные переменные по месту их использования, а не где-то в секции var,

Это дело привычки - читать описание _всех_ переменных в _едином_ месте в начале кода или искать в чужом коде объявление _каждой_ переменной по _всему_ коду. Над этим даже официально прикалываются: http://ru.wikipedia.org/wiki/International_Obfuscated_C_Code_Contest

отсутствием операторов +=, *=, -=, /=, ?:

На сайт не ходим и документацию не читаем ;)

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

>в CL/Scheme же органично вписываются, хотя изначально там их нет...

Да, добавить новые функциональные плюшки в изначально функциональный Лисп - это тоже самое...

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

Не знаю, я сам в этих анонимусах путаюсь:)

хотя некоторые вещи из Си ему бы не помешали, например возможность объявлять локальные переменные по месту их использования, а не где-то в секции var, отсутствием операторов +=, *=, -=, /=, ?:

Объявлять локальные переменные по месту использования Си научился только к началу 00-ых. Это вообще самый сильный аргумент, я так понимаю, про «+=», ... ? Дальше будет, что в паскале надо писать begin/end вместо { } ? Т.е. понимаем, что по сути одно и то же, но синтаксис немного отличается? Зато вместо синтаксического сахара паскаль предлагает средства поддержки модульности и типизацию данных, которая по факту в Си отсутствует. Логический тип в Сях мы тоже получили к 00-ым как большое достижение.

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

>Над этим даже официально прикалываются...

++*argv--

От семантики Си иногда хочется вздрогнуть :)

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

> искать в чужом коде объявление _каждой_ переменной по _всему_ коду.

зачем их искать? переменные объявлены там где используются, это как раз удобней при чтении чужого кода, а постоянно бегать от блока кода к секции var и обратно, вот это ппц =)

но что Си это тоже п*ц, никто и не спорят, только его почти и не пихают туда, куда пихают паскаль.

http://ru.wikipedia.org/wiki/International_Obfuscated_C_Code_Contest

так никто ж не заставляет так писать, или Вам принципиально хочется усложнить жизнь себе и другим? юзайте брейфак тогда, или рисуйте картины на перле, например. попробуйте записать паскалевский код в одну строку — тоже не очень-то читабельно получается, и тут уже питонисты посмеются. чуть-чуть. =)

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

> Да, добавитть новые функциональные плюшки в изначально функциональный Лисп - это тоже самое...

дело вовсе не в функциональности лиспа, а в макрах, предоставляющих возможность описывать конструкции с семантикой call-by-name и как следствие call-by-need. в паскале такой возможности нет.

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

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

> Да, добавить новые функциональные плюшки в изначально функциональный Лисп - это тоже самое...

не хотите о функциональных? давайте поговорим о других, например о мультиметодах.

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

Заигрывать надо было бы с явой.


BorgLand JdeBuilder не оно?

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

>зачем их искать

Повторюсь: «это дело привычки» перемешивать мухи с котлетами или нет.

или Вам принципиально хочется усложнить жизнь себе и другим

выдумываем и вырываем из контекста ? :) При прямых (а не «Ъ») руках С-код пишется легкочитаемым. Но С _позволяет_ писать сложночитаемые конструкции. И некоторые «Ъ-С-ки» этим кичатся и пользуются. Суть ведь не в краткости _исходного_ кода, а в его легкочитаемости для того, кто потом будет его исправлять или усовершенствовать (даже для самого автора через время, достаточное чтобы забыть свои же выркутасы).

попробуйте записать паскалевский код в одну строку

Не путайте тёплое с мягким. Речь об одном выражении, а не обо всём коде в одну строку ;) А таких (паскалевский код в одну строку) «Ъ»-программеров я видал: «А я написал программу по лабе всего в одну строку!» Потом они добираются до С (С++) и «творят».

Что-то вы часто выдумываете «факты» «обличающие» фри-паскаль:

+=, *=, -=, /=

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

или Вам принципиально хочется усложнить жизнь себе и другим

попробуйте записать паскалевский код в одну строку

Как-то фанатизмом попахивает. А с фанатиками разговор не возможен, кроме как _за_ его же идею. Всё что не _за_ - всё Г.

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

> Потом они добираются до С (С++) и «творят».

Дайте им уже Перл! или что-то в этом духе =)

Как-то фанатизмом попахивает.

не фанатизмом, а желанием удобства в написании кода.

вот пример с ...Obfuscated_C... совсем не к месту...

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

Теперь я понимаю почему ваши заказчики могут менять задание на ходу.

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

> Вы не рассматриваете трудозатраты на ведение проекта.

Естетсвенно, я ведь для вас не тренинг по управлению проектами провожу.

Тренинг как раз для Вас просто необходимо провести в связи с демонстрируемыми подходами и пониманием.

Я не против mvc в принципе. Естественно её (модель) нужно применять с умом.

конечно, тут договорились :)

Речь шла об отделении интерфейса от реализации, о том что этого избегать нелья. Я говорю о том, что в некоторых случаях можно.

А где я на это возражал?

А в других о этом за вас позаботились разработчики библиотек Qt или VCL.

эммм... здесь не согласен, даже с использованием этих библиотек (а уж использование бывших borland'овских продуктов вообще подталкивает к этому) спокойно можно писать «некошерный» код, который потом придётся долго распутывать

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

> не фанатизмом, а желанием удобства в написании кода.

Чукча не читатель, чукча писатель?

Код написать - много ума не надо. Написать код так, чтобы он был удобочитаемым и его не нужно было документировать - вот это уже другой вопрос.

Вопрос третий - объявление переменных по месту использования - практика ООП говорит, что метод, который не вмещается в страницу экрана - нужно рефакторить. Итого - ты не можешь писать такие методы?

-= += - детский сад, читай книжки на предмет Inc(x, [n]), Dec(x, [n])

*= /= - ок, сначала ты покажешь, где это РЕАЛЬНО нужно и как часто, потом поговорим.

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

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

Итого - малолетка детектед, уровень аргументов соответствующий.

Не интересно.

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

>в CL/Scheme же органично вписываются, хотя изначально там их нет...

Вся идеология современного лиспа выражается фразой: «Господа, не дрочите на парадигму. Программируйте в терминах предметной области.»

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

sapsan, korvin_! Обсуждать достоинства языка по виду синтаксического сахара - детскийсадштаныналямках.

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

> *= /= - ок, сначала ты покажешь, где это РЕАЛЬНО нужно и как часто, потом поговорим.

там же, где и += (inc), -= (dec)

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

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

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

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

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

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

речь не о синтаксическом сахаре

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

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

а эта мелочь как раз для читаемости и нужна, ведь в Си, Паскале и многих других языках if не функциональный, не умеет возвращать значение. в Си сделали для этого конструкцию ?:, паскалисты видимо не осилили. и средствами паскаля ее не реализовать для самого языка и в самом языке.

if (x > y) then z := x else z := y;

z := if (x > y) then x else y;

не уж-то первый вариант для Вас более читабельный? чем плох второй?

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

>> *= /= - ок, сначала ты покажешь, где это РЕАЛЬНО нужно и как часто, потом поговорим.

там же, где и += (inc), -= (dec)

Ответ неверный, садись, два. Заодно сходи про итераторы почитай, да про адресную арифметику.

Мож поймешь чего.

if (x > y) then z := x else z := y;

z := if (x > y) then x else y;
не уж-то первый вариант для Вас более читабельный? чем плох второй?

Деточка, то, что ты ото понаписал, на паскале звучит как z := max(x, y);

Вы еще на лабораторных этого не проходили?

Тогда ой.

P.S. В этой ситуации тебе лучше замолчать и начать слушать. Ты уже наговорил столько, что тебя еще долго по этому нику никто не будет воспринимать как человека мыслящего и хоть что-то знающего.

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

>не хотите о функциональных? давайте поговорим о других, например о мультиметодах.

Да, это более вменяемый пример чем паттерн-матчинг в Паскале;) И да, это было бы неплохо. Но неужели Вы всерьез считаете, что добавление мультиметодов как-то качественно может повлиять на судьбу Паскаля? Т.е. это конечно круче, чем «+=», но все равно это не киллер-фича никакая. В подавляющем большинстве случаев для реализации мультиметодов можно использовать двойную передачу.

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

Деточка, то, что ты ото понаписал, на паскале звучит как z := max(x, y);

попробуйте абстрагироваться от конкретного примера.

if condition then z := someExpr else z := someOtherExpr;

z := if condithion then someExpr then someOtherExpr;

или Вы намекаете, что в каждом таком случае нужно писать отдельную функцию? но тогда становится еще менее читабельней:

function foo (x, y): t;
begin
  if condition then Result := e1(x, y) else Result := e2(x, y);
end;
z := foo(x, y);

z := if condithion then someExpr then someOtherExpr;
или что Вы имеете ввиду?

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

> Но неужели Вы всерьез считаете, что добавление мультиметодов как-то качественно может повлиять на судьбу Паскаля?

одних только их — вряд ли.

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

> или что Вы имеете ввиду?

Пока я имею в виду только то, что ты, в силу отсутствия практического опыта и общей беспомощности, даже не можешь сочинить внятные примеры на /= *= :? (хотя они в природе есть).

Я правда грешным делом жду, когда до тебя снизойдет озарение про IIF() или IfThen(), и почему их можно, нужно или не нужно использовать вместо :?, и главное - в каких случаях.

И про инлайнинг тоже. Ага.

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

Блин... Сколько уже постов об одном и том же ^_^ FPC понимает конструкции вида +=; -=; *=; /= и уже очень-очень давно... Про ?: - не уверен, сие вряд ли... Вспоминается фраза «перегрузка операторов», но про такие вещи мы только слышали и подходит ли оно тут - не знаю ^_^ Но в fpc есть точно ^_^

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

Приятно, конечно, что паскаль защищают, но всё-таки ^_^' Там это уже вообще-то есть

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