IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> Помощь начинающему, Нужна помощь в освоении Pascal'я
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


Всем доброго времени суток! Решил ознакомится со столь удивительной вещью, как Pascal! Но проблема в том, что я не знаю с чего начать! По этому, я обращаюсь к великим гуру и прошу наставить на путь истинный. Все, что касается этой темы приветствуется.
P.S: Все, что надо для начало работы я скачал, мне нужен только учебный материал.


--------------------
Пора убить в себе человека...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Знаток
****

Группа: Пользователи
Сообщений: 466
Пол: Мужской
Реальное имя: Федосеев Павел

Репутация: -  9  +


Есть хорошая книга "Песни о Паскале" - там рассказывается от первых шагов со средой программирования.
http://oleg.derevenets.com/

Далее - решение домашних заданий. А также некоторые практикуют помощь двоечникам на форумах. За качество решений, обычно, некоторое время их критикуют, порой даже грубо. Но где-то же нужно учиться. Главное понимать для себя - зачем сам пришёл на форум, и что на форуме люди разной квалификации.

Пока вы начинаете, подскажу ещё некоторые инструменты. Есть готовые бесплатные программы для форматирования исходных кодов. Я очень настоятельно рекомендую ими пользоваться. Из того, что доступно, можно взять JCF. Ссылки на пояснения Раз, два. И ещё, статья, почему это нужно http://www.gunsmoker.ru/2011/01/blog-post.html. И ещё, мне очень понравилась идея статьи http://www.gunsmoker.ru/2010/05/90.html.

Успехов.

Сообщение отредактировано: Федосеев Павел -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


Цитата(Федосеев Павел @ 6.02.2016 18:29) *

Есть хорошая книга "Песни о Паскале" - там рассказывается от первых шагов со средой программирования.
http://oleg.derevenets.com/

Далее - решение домашних заданий. А также некоторые практикуют помощь двоечникам на форумах. За качество решений, обычно, некоторое время их критикуют, порой даже грубо. Но где-то же нужно учиться. Главное понимать для себя - зачем сам пришёл на форум, и что на форуме люди разной квалификации.

Пока вы начинаете, подскажу ещё некоторые инструменты. Есть готовые бесплатные программы для форматирования исходных кодов. Я очень настоятельно рекомендую ими пользоваться. Из того, что доступно, можно взять JCF. Ссылки на пояснения Раз, два. И ещё, статья, почему это нужно http://www.gunsmoker.ru/2011/01/blog-post.html. И ещё, мне очень понравилась идея статьи http://www.gunsmoker.ru/2010/05/90.html.

Успехов.

Аригато, сенсей! good.gif


--------------------
Пора убить в себе человека...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


Еще вопрос. А каким паскалем лучше пользоваться? Вообще, хочу написать на нем текстовый рогалик. так какой будет лучше всего для достижение моей мечты? Желательно на Windows 8.1 64x


--------------------
Пора убить в себе человека...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Большевик–концептуал
**

Группа: Пользователи
Сообщений: 134
Пол: Мужской
Реальное имя: Иван Левашев
Jabber: octagram@jabber.ru
Skype: i.levashew
QQ: 3152538431
WeChat
Ада: Сторонник
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик
Turbo Pascal: Установлен

Репутация: -  0  +


Хороший Паскаль называется Ада. На худой конец Delphi из тех, что поновее, хотя бы XE2. Про FPC ничего положительного сказать не могу за всё время работы с ним. Сильно на любителя.

И есть ещё варианты для компиляции в Web, такие, как DWScript, но он, наверное, не готов для новичков.


--------------------
If you want to get to the top, you have to start at the bottom
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


Цитата(OCTAGRAM @ 6.02.2016 22:11) *

Хороший Паскаль называется Ада.

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


--------------------
Пора убить в себе человека...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Знаток
****

Группа: Пользователи
Сообщений: 466
Пол: Мужской
Реальное имя: Федосеев Павел

Репутация: -  9  +


Лучший пистолет - который в руке. Чем можете пользоваться, на том и реализуйте.

По моему мнению, Delphi - хорошо, но он платный и дорогой. Поэтому, если выбирать паскаль на короткий и некоммерческий период, то - FreePascal. У него есть Delphi-подобная RAD - рисовалка окошек Lazarus. В Lazarus можно вести и консольные проекты. Для помощи в ответах на форуме лично я пользуюсь SciTE (настройки обсуждались на форуме и легко находятся поиском, а также в интернете), читал, что можно Notepad++, Code::Block.

Язык Ада мне незнаком. Но судя по рекламной полоске на шапке форума, какая-то помощь при изучении будет вам оказана.

Про рогалик впервые прочитал месяц назад на форуме FreeBASIC - http://free-basic.ru/g00.html. Что ещё раз подтверждает мысль из первого абзаца.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


Цитата(Федосеев Павел @ 7.02.2016 2:57) *

Лучший пистолет - который в руке. Чем можете пользоваться, на том и реализуйте.

Спасибо, прочел, что в аде есть защита от таких как я smile.gif . Теперь ищу и нечего не нахожу. Настроение и настрой: mega_chok.gif


--------------------
Пора убить в себе человека...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Большевик–концептуал
**

Группа: Пользователи
Сообщений: 134
Пол: Мужской
Реальное имя: Иван Левашев
Jabber: octagram@jabber.ru
Skype: i.levashew
QQ: 3152538431
WeChat
Ада: Сторонник
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик
Turbo Pascal: Установлен

Репутация: -  0  +


Цитата(Faust VIII @ 6.02.2016 22:54) *
А можно продемонстрировать хоть одну игру на этом языке?


Например: http://snake.gnoga.com/
Чтобы посмотреть код, нужно открыть http://www.gnoga.com/source и выбрать snake-connection.adb. Главный цикл находится в процедуре Paint, код которой на момент написания начинался со строки 213.

Либо посмотреть по прямой ссылке http://sourceforge.net/p/gnoga/code/ci/mas...ection.adb#l213

Сапёр под Qt ещё один умелец запрограммировал: http://www.qtada.com/ru/applications.html

Цитата(Faust VIII @ 6.02.2016 22:54) *
Я читал об Аде ( название просто зашибись... ), ее минус - многословность.


Название там — женское имя (Ада Лавлейс Байрон, первый программист), и мне кажется, оно русское ухо не режет.

Когда я переходил с Delphi, то Delphi штампы потащил в Аду тоже. Если какой–то пакет with'ится, то у меня он и use–ался тоже обязательно. Перегрузкой унарного плюса баловался (впрочем, и сейчас так делаю). Помойку в переменных разводил. Но в целом проникся духом, и use пользуюсь избирательно, а Ada 2012 даёт более нормальный контроль за пространством имён, можно use type делать для типов вместо use для всего пакета, чтоб операции с ними были доступны, а остальное лишнее в пространство имён не сыпалось.

Дополнительные слова там — как рёбра жёсткости и элемент читаемости. Наступив на грабли, сам начнёшь чаще перестраховываться.

Местами, впрочем, и правда чего–то не хватает. for-loop и while-do автоматически создают блок команд, как бы экономя один begin и один var с переменной цикла, которую в Аде не нужно объявлять, как в строке 38, но если надо объявить дополнительные переменные или обработать исключение, то приходится добавлять declare-begin-end, как в строке 189, и эта экономия нивелируется, но в Delphi и FreePascal, например, такого вообще нет, приходится разводить помойку var вверху процедуры. Впрочем, в строке 189 программист тоже мог бы развести помойку, как в Delphi, объявив переменную перед begin процедуры и уменьшить уровень вложенности, убрав declare-begin-end, но это лишний раз показывает, что опытные программисты добровольно приходят к такому стилю кода. И я тут посчитал: даже если программист на Аде не развёл помойку, а на Delphi — развёл, то на Delphi всё равно будет длиннее на одну строку (в стандартном стиле).

В общем, как–то оно не жмёт в реальной жизни. Думаешь, как покрасивей и правильней, а не как покороче.


На моё отношение к FreePascal повлияли проблемы, описанные в статье Композиция, нормализация и уроды.

Цитата
Не уроды

И только одни люди поступили единственно возможным образом, отрезав уродам вышестоящих типов все пути к отступлению в туманный отказ. Они устроили в Java такой Освенцим, что остается только восхищаться и трепетать. Им, слава Б-у, стало ясно, что если всю эту радость не запихать американским программерам ректально и эксплицитно, бардак из wchar и char продолжится до 3000 года.

Да, увы, их UTF-16 включает только Basic Multilingual Plane (не хватает пары десятков тысяч Хан-кодпойнтов), но по сравнению с вышестоящим убожеством это невероятный прогресс.


Вот и в Delphi 2009 поступили как положено, переделав всё на Юникод, правда, к сожалению, всего лишь UTF-16. В Lazarus, насколько я помню, всё работает через однобайтовые string, которые в UTF-8, и это ещё куда ни шло. Но вот стандартная библиотека по–прежнему, похоже, работает с ANSI, и я, когда с файловыми путями манипуляции произвожу, смутно догадываюсь, что надо бы UTF-8 перекодировать в ANSI, иначе может не работать в большем количестве случаев. И от этой неуверенности мне неуютно. Хорошо бы там тоже везде остался Юникод. Не хватает диктатора, который бы отстранил всех несогласных и навёл порядок.

Что касается Ады, то там, с одной стороны, в библиотеках много, где однобайтовые строки, нарушая стандарт, несут в себе UTF-8. И находятся программисты, которые на Windows хранят там ANSI. Но с другой стороны, там есть самые безгеморройные UTF-32 строки, и в принципе можно просто перекодировать между UTF-8 и UTF-32 на границе вызовов процедур, написанных разными программистами. В этом нет такой гигантской проблемы, как от ANSI.

И, спасибо WinAPI, выжечь из программы всё, кроме Unicode, не так просто, как этому следовало бы быть. Проблемы идут из файлового I/O, который будет в ANSI или OEM, а версии с W там просто нет. Существуют пути обхода этой проблемы:
http://www.siao2.com/2010/10/07/10072032.aspx
http://www.siao2.com/2010/05/07/10008232.aspx

Но в библиотеки времени выполнения они не всегда попадают. В node.js попало. console.log() замечательно пишет Юникод что на Windows, что на Linux.

А в GNAT, FreePascal и даже в Delphi, насколько мне известно, не попало, так что ввод/вывод надо через обёртки делать, чтоб был Unicode везде.

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

Я же правильно понимаю, что игра будет в консоли отрисовывать игровое поле и управляться нажатиями клавиш?

Сообщение отредактировано: OCTAGRAM -


--------------------
If you want to get to the top, you have to start at the bottom
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


OCTAGRAM, Где найти компилятор для ады? И где вообще на ней писать?


--------------------
Пора убить в себе человека...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Большевик–концептуал
**

Группа: Пользователи
Сообщений: 134
Пол: Мужской
Реальное имя: Иван Левашев
Jabber: octagram@jabber.ru
Skype: i.levashew
QQ: 3152538431
WeChat
Ада: Сторонник
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик
Turbo Pascal: Установлен

Репутация: -  0  +


Как правильно заметили, в шапке есть некоторая информация на эту тему. Компилятор и IDE, которыми я пользуюсь, я скачиваю здесь.

Выбираю x86 (Windows), раскрываю GNAT Ada GPL 2015, там качаю и устанавливаю gnat-gpl-2015-x86-windows-bin.exe, затем качаю и устанавливаю Win32Ada GPL 2015. Я вообще много, чего ставлю, и через MSYS из исходников могу собрать, но ограничимся пока таким набором.

Редактирую я обычно попеременно в GPS (это IDE там такая) и в Far Manager, а если под Linux или Mac OS X — то в nano. Far Manager настоятельно рекомендую поставить.

Я собрал минимальную консольную программу, чтоб было, с чего начинать:

Прикрепленный файл  Minimal_Console.zip ( 30.63 килобайт ) Кол-во скачиваний: 62


Нужно открыть GPS, далее Edit » Preferences… » General » Character set поменять с Western/Latin-1 (ISO-8859-1) на Unicode UTF-8. После этого Project » Open … и выбрать Minimal_Console.gpr в том месте, где он распакован. Слева появится контейнер–проект под названием «Minimal_Console», в нём папка «.», если её развернуть, там несколько файлов, из них главный — это Minimal_Console.Main.adb. Если всё настроено нормально, то там будет видно русские буквы.

Собирать можно из IDE, Build Main — это выполнить, а Run Main — запустить, но запускаются они они там не в консоли Windows, а во вкладке, и обычно это удобно, но рисовать, как на консоли текстом, не получится. Поэтому либо отдельно запускать, либо через Far. Ну либо можно ещё запрограммировать принудительное создание консоли.

Что касается Far, нужно после установки сделать F9 » Options » Languages » Russian (Русский) » Russian (Русский), затем F9 » Параметры » Настройки программы просмотра » Кодовую страницу по умолчанию поменять на «65001| UTF-8» и так же для редактора: F9 » Параметры » Настройки редактора » Кодовую страницу по умолчанию поменять на «65001| UTF-8». Чтобы настройки сохранились, Shift-F9. На этом с настройкой Far более менее всё.

Компиляция из командной строки: gprbuild Minimal_Console.gpr

По изучению Ada можно посоветовать Адское программирование, либо то, что в шапке по ссылке «Ада–2012». Собственно стандарт Ада–2012 (на английском); а также перевод стандарта Ада–83.

В моём архиве я сделал, чтобы работал юникодный вывод строк, но не ввод, потому что из того проекта, откуда я вырезал, ввода из консоли не было, был только веб–сервер, который мог писать в консоль отладочные сообщения. Если нужно, можно подумать над тем, чтобы подключить библиотеку WinLineEdit, но я так понимаю, управление должно быть стрелками, так что работу над вводом надо как–то по–другому делать, через события консоли.


--------------------
If you want to get to the top, you have to start at the bottom
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Знаток
****

Группа: Пользователи
Сообщений: 466
Пол: Мужской
Реальное имя: Федосеев Павел

Репутация: -  9  +


Faust VIII, выбирайте любой язык - хуже не будет. Начнёте реализовывать рогалик, наберётесь опыта. В конце-концов, я изучал только Pascal, а когда понадобилось программировать PLC - изучил ещё LD (RLL Plus), ST, FBD, SFC, когда захотел поиграться с микроконтроллерами (для работы сделать приспособу на макетке) - изучил C (естественно, не весь, а только основные конструкции). Самостоятельно изучал Ada по книжке, но остановился на том из-за отсутствия интернета и компилятора в ту пору. Это я к тому, что все языки почти одинаковы. Разница проявляется лишь в "заточенности" на конкретные задачи.

OCTAGRAM, вы толкаете новичка на менее документированный путь - пруф. Ведь помимо ядра языка, в реальной жизни применяются готовые библиотеки (например, стандартный C/C++ богат этим, настолько, что старые реализации Pascal - просто голодранцы беспомощные). Это помимо не самой распространённости языка и тех, кто сможет помочь. Хотя по этой ссылке упоминается автор книги-учебника - А.Е. Гавва - Адское программирование, в которой рассмотрено почти всё, что нужно и по конструкциям и по организации работы.

Ещё, поделитесь, что подтолкнуло на переход к Ada - самостоятельный перебор инструментов, требование работодателя или что-то иное?

Сообщение отредактировано: Федосеев Павел -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Большевик–концептуал
**

Группа: Пользователи
Сообщений: 134
Пол: Мужской
Реальное имя: Иван Левашев
Jabber: octagram@jabber.ru
Skype: i.levashew
QQ: 3152538431
WeChat
Ада: Сторонник
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик
Turbo Pascal: Установлен

Репутация: -  0  +


Использовать таски я не рекомендую без прочтения хотя бы раздела книги Танненбаума «Операционные системы» или Р. Бара, было у него что–то как раз про многозадачность в языке Ада. А Delphi — это вообще копец! Такого примитива синхронизации, как условные переменные, долго не было в стандартном наборе, зато там вот эти самозавершающиеся потоки, с которыми пришлось повозиться в PayPRO. Ну не делается так по–хорошему. Правильно, что в Аде неудобно делать то, что пытался автор того поста.

Сам я в далёком 1996м году начинал изучать QBASIC, имея только скудную документацию на английском, которого нифига не знал. Сейчас, мне кажется, возможности гораздо выше. Не надо утрировать.

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


--------------------
If you want to get to the top, you have to start at the bottom
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


Хмм, а теперь я совсем растерялся! Можно какое-нибудь сравнение, сходство, различия и прочее. Можно продемонстрировать какие-нибудь сложные программы, что-бы прям "ну ваще". Те же рогалики. Но можно так же и программы с выводом на экран. И главное, что надо:
Pascal:
1. Какие комплераторы использовать лучше и различия?
2. Какой Pascal лучше?
3. Преимущества перед Ada'й?
Ada:
1. Какие комплераторы использовать лучше и различия?
2. Какая Ada лучше?
3. Преимущества перед Pascal'ем?


--------------------
Пора убить в себе человека...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Большевик–концептуал
**

Группа: Пользователи
Сообщений: 134
Пол: Мужской
Реальное имя: Иван Левашев
Jabber: octagram@jabber.ru
Skype: i.levashew
QQ: 3152538431
WeChat
Ада: Сторонник
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик
Turbo Pascal: Установлен

Репутация: -  0  +


Среда разработки GPS для Ады написана на Аде. И та часть компилятора, которая обрабатывает Аду, тоже написана на Аде (оптимизацией занимается GCC, написанный на C). Это достаточно сложно? По мне, так да.

Играми, к сожалению, последний раз в 90х занимался, на Турбо Паскале под EGA графику. Но сейчас, если бы понадобилось делать, взял бы SDLAda, почитал доки по SDL и написал такое же, но на Ada. Нормальная практика — читать пример для одного языка программирования и писать на другом. Автор SDLAda в IRC сидит, можно у него при случае спросить, если что не понятно.

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

Как общий принцип, то, как я уловил дух языков и сообществ вокруг них: Ада для инженеров, Free Pascal — для хакеров, Delphi — для базаданьщиков, что, впрочем, не мешает использовать их крест на крест. Так, я хаки на Аде тоже запросто делал, а для Delphi нашёл реализацию многострадальных условных переменных и если не мог писать на Ada, то хотя бы на Delphi писал многопоточный код как положено, а не как у юных хакеров.

Delphi (да и Lazarus) подкупают доступностью IDE, но с другой стороны, код, который эта IDE производит, реализует антипаттерн «божественный объект». Теоретически возможно на Delphi и FreePascal использовать другие графические движки, но я таких примеров знаю не много.

Ada во многих качествах близка к C++. И в положительных, и в отрицательных. Положительная сторона — это свобода в выборе графического движка, богатство библиотек, а обратная сторона — это то, что есть куча разношёрстных не стыкующихся друг с другом решений. Хотя в Delphi тоже есть переход от VCL к FireMonkey, два разных движка, но, сдаётся мне, они более близки друг к другу, чем то, что используется для создания графических программ на Ada. Лидерами тут являются GtkAda, на которой сделана среда разработки GPS, и QtAda Вадима Годунко. Они являются обёртками для Gtk+ и Qt, соответственно. Помню, было ещё что–то для интеграции с Tcl/Tk. Это из кроссплатформенных. В библиотеке OEM для графики применяется GWindows Дэвида Боттона, работать она будет только на Windows. Ещё есть чисто адская графическая библиотека Lumen, использующая OpenGL, но её готовность мне не известна. Если бы мне завтра нужно было делать графический интерфейс на Аде, я бы скрипнул зубами, но взял QtAda. Не люблю я Qt, но уж больно хорошо QtAda сделана.

Pascal сейчас, главным образом, представлен Embarcadero Delphi и FreePascal. Delphi более профессионален, но ценовая политика, конечно, удручает, и то сообщество, которое было, всё рассасывалось и рассасывалось. Очень хороший ход был раздать Turbo Delphi 2006 Explorer на шару всем желающим. Я, правда, не успел. Там нужен был ключ, который на сайте можно было получить в ограниченный период времени. И больше такого не было, зато появлялись запреты, например, в дешёвых версиях использовать базы данных. Идут по инерции и выжимают соки из того, что есть. Поддерживают Windows и Mac OS X, и делают это довольно хорошо. Есть у них ещё версии для Android и iOS, но там в чём–то уже другой язык, который, кстати, мне нравится больше. В мобильном Delphi есть долгожданный подсчёт ссылок для классов. Я его ждал–ждал, ждал–ждал, плюнул, перешёл на Аду, и лет через восемь оно таки появилось, но пока только в мобильной версии. И то появилось не потому что там откровение кому–то снизошло, а потому что Apple реализовал ARC (автоматический подсчёт ссылок) в LLVM, перенёс на LLVM свой Objective-C, а чтобы Delphi компилировать под iOS, в Embarcadero сделали переделали компилятор под LLVM и просто воспользовались тем ARC, который там уже был. Но в общем, при своей закостенелости, всё же сделали они много. Если скачать пиратский Delphi из p2p, этот продукт будет гораздо лучше, чем FreePascal, и в чём–то лучше, чем Ada. Всё более хороший компилятор Delphi для всё более узкого круга разработчиков, я бы так охарактеризовал эту ситуацию.

FreePascal — компилятор гораздо более консервативный, и разработчики у него что–то с чем–то. Ну, какие есть. Если разработчики Delphi, когда добавляют в язык новые возможности, оглядываются на Delphi, то разработчики FreePascal делают то, в чём усматривается влияние C++, и получается пакость. На Аду не оглядывался никто, а зря. Глядишь, что–то путное бы сделали в кой–то веки хоть кто–нибудь. Какое–то время между Delphi 7 (2001) и Delphi 2005 у Borland был кризис, да и потом их поштормило, то CodeGear, то теперь вот Embarcadero очередные владельцы. На какое–то время FreePascal перехватил инициативу инноваций, и у них и в самом деле был более крутой язык. С RAII что–то не заладилось ни у Delphi, ни у FreePascal, но у FreePascal хотя бы перегрузку операторов (плюс, умножить, больше, меньше и т. п.) сделали раньше, чем в Delphi. В Delphi это потом тоже сделали, кажется в 2006, но с другим синтаксисом, ближе к .NET, и получилось, на мой взгляд, лучше, чем в скопировавшем C++ FreePascal. Generic раньше появились во FreePascal. В Delphi они были только в 2009. И тоже, на мой взгляд, в Delphi сделаны лучше. Хотя без RAII они нормально работать не могут, на мой взгляд, но в Delphi 2009 отсутствие нормального RAII лучше скомпенсировано в контейнерах. В Delphi можно указать контейнеру обработчики событий изменения/извлечения/добавления, раз уж нельзя напрямую на сам тип навешивать RAII. Разработчики FreePascal и те, кто показывал примеры generic, делали примеры, где контейнер работает то с числами, то со строками, но вот как–то не чувствуется у них понимание, что для строк RAII навешивается магией компилятора, и работает это поэтому идеально, а для своего типа, хоть ты плачь, так же идеально сделать нельзя, а без этого какой интерес? Получаются контейнеры, которые нормально работают только с числами и строками.

Положительным качеством является то, что портирован под кучу платформ. Хотя у них тут с Адой не всё так однозначно. FreePascal портирован под мобильные платформы. У Ada я видел порт под Android на DragonLace, кто–то сделал, чтоб с FreeBSD можно было под Android разрабатывать, а вот из–под Windows, наверное, тоже можно собрать, но не собирал никто. Что касается iOS, один из сотрудников AdaCore похвастался, что они у себя собрали версию под iOS, но никому не дадут. Вроде как не нужна. С другой стороны, у Ada есть компиляторы в Java VM и .NET, а у FreePascal — нет. Это может пригодиться на хостингах, на которых можно размещать только управляемый код. Вот у Google, кажется, есть Google Apps, на котором только Java VM может работать, и даже вроде бесплатно можно было что–нибудь хостить, если вписаться в ограничения по памяти, жёсткому диску, обращений из сети и т. п.

У Delphi был компилятор Delphi.Net, но от языка Delphi он сильно отличался, например, там с бухты–барахты все строки стали неизменяемыми, и поэтому не было никакого преимущества, какое есть у одного языка, по–разному компилируемого. Я, конечно, понимаю, что когда работает счётчик ссылок, можно точно знать, является ли владелец строки первым и последним, и можно сделать строку уникальной, если нет, а при сборке мусора о владельцах в общем случае ничего не известно, но всё же, я вот ещё на языке Icon писал, и, хотя там тоже сборка мусора, но когда я работаю со строками, я этого никак не чувствую, там внутри всё само заменяется как надо, как если бы я писал на Delphi или Ada. Это значит, можно было и в Delphi.Net прозрачный переход сделать. Но не сделали.

Далее, FreePascal и Delphi реализуют языки, для которых они сами и являются законодателями. Для языка Ada, в отличие от них, есть международные стандарты ISO по годам: Ada-83, Ada-95, Ada-2005, Ada-2012. Для Паскаля, вообще говоря тоже был стандарт ISO, но Delphi и FreePascal от него ушли оооочень далеко, но если вдруг захочется компилятор Паскаля по стандарту ISO, один такой называется GNU Pascal (GPC).

Стандарт на язык Ада подразумевал, что будет множество реализаций, и сам стандарт обеспечит возможность менять производителя компилятора. Последний стандарт, для которого так оно и было, был Ada-95. Ada-2005 был реализован только в GNAT, а остальные компиляторы реализовали только отдельные возможности Ada-2005. С появлением стандарта Ada-2012 GNAT остался вне конкуренции, и возможности, которые в этот стандарт вошли (программирование по контракту, например), появились раньше стандарта в GNAT. Сам GNAT при этом полностью открыт. AdaCore раз в год выпускает GNAT GPL, скомпилированный сотрудниками своей компании. Те, кто купили у них GNAT Pro (при курсе доллара в 30 рублей минимальный заказ стоил 60000руб. за команду из 5 разработчиков), получали доступ к различным комбинациям кросскомпиляторов и некоторых платформ, под которые нет версии GPL. Ну, например, Mac OS X для Intel архитектуры одно время был типа эксклюзивом для версии Pro, а в GPL была только PowerPC, которая, впрочем, в Mac OS X для Интелов замечательно эмулировалась. При этом GNAT является неотъемлемой частью семейства компиляторов GCC. AdaCore отправляет свои улучшения в так называемый FSF GCC, но уже под лицензией GMGPL, не требующей открытия исходных кодов, и обычно все сторонние сборки GNAT основаны на коде из FSF GCC. Особо желающий может собирать из свежих исходников от GPL версии, их можно скачать с того же сайта, что и установщик.

Одна из таких сборок, основанная на FSF GCC — это TDM–GCC, ссылка на который есть в шапке. Но есть ещё в MinGW, MinGW64, Cygwin тоже сборки GNAT. Если под Linux Debian или Ubuntu установить apt-get install gnat, это будет тоже GNAT из FSF GCC. Под Mac OS X Intel году так в 2007м востребованы были сборки GNAT от Andrew Reynolds.

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

Из выбывших из состязания компиляторов примечателен AdaMagic от SofCheck. У них был прошедший сертификацию компилятор Ada 95 в C/C++. Они эту технологию давно не развивали и потом продали её MapuSoft'у, и кроме как у них, я сейчас не знаю, где её можно достать. Компилятор у них поддерживает Ada 95 с некоторыми возможностями Ada 2005, какими именно, не знаю. Среди интересных платформ вижу, тоже есть Android, зато нет iOS. Имея транслятор в C, наверное, компилировать в iOS было бы легче, но я не знаю наверняка. Скачал как–то, глянул, что там внутри. exe'шники никакой особой защитой не закрыты, я, наверное, мог бы их ломануть или написать кейген. Некоторые потенциально ключевые файлы типа библиотеки времени исполнения, зашифрованы, но не знаю, наколько это большое препятствие, сишные–то файлы на выходе транслятора присутствуют, можно и пересобрать. Для меня технология трансляции в C представляет интерес, так как было бы здорово транслировать в Asm.js, NaCl, FlasCC, WebAssembly, и чтобы всё это работало в браузере. Но там в любом случае надо будет что–то дорабатывать, к чему я не готов сейчас.

Впрочем, Максим Резник разработал A2JS, который может компилировать ограниченное подмножество Ada в JavaScript. A2JS входит в состав Матрёшки.

Сам SofCheck был куплен AdaCore, и у AdaCore эта технология тоже есть. Про AdaMagic нельзя ничего найти на сайте AdaCore, зато она упоминалась в блоге языка программирования ParaSail. Есть языки, реализующие программирование на зелёных потоках: Erlang, Limbo, Rust, Go. Такие языки, как ParaSail, Sparkel, Javallel и Parython — из той же серии, но со своими идеями. Из них Javallel похож на Java, Parython — на Python, Sparkel — на Ada, а ParaSail — помесь всех трёх. Все четверо компилируются в байто–код, который работает на общей виртуальной машине. Компилятор и виртуальная машина написаны, понятное дело, на Аде. Эксперименты с языком они там, похоже, не закончили, релиз не объявлен. Я сам пытался перенести что–нибудь с node.js, но быстро наткнулся на то, что в Sparkel из коробки нет HTTP, XML и JSON. Добавить их можно было бы, но уже по такому нюансу чувствуется, что язык пока экспериментальный.

Некий интерес могла представлять ObjectAda. Интересна она тем, что там было IDE со встроенным конструктором форм, наиболее близко к тому, что есть в Delphi. Но она тоже так и застряла на Ada 95 с небольшими дополнениями из Ada 2005. Где–то попадалась пиратская версия, но большого интереса, мне кажется, давно не представляет.


--------------------
If you want to get to the top, you have to start at the bottom
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


Решил помучить Паскаль. Напишу пару игр/программ, возьмусь за Аду, может, информации побольше о ней появится. А так, кидайте все, что может помочь в начале. Думаю, многим новичкам это пригодится respect.gif


--------------------
Пора убить в себе человека...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Большевик–концептуал
**

Группа: Пользователи
Сообщений: 134
Пол: Мужской
Реальное имя: Иван Левашев
Jabber: octagram@jabber.ru
Skype: i.levashew
QQ: 3152538431
WeChat
Ада: Сторонник
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик
Turbo Pascal: Установлен

Репутация: -  0  +


На pascal.net.ru разбросаны комментарии про аналоги того или иного элемента синтаксиса имеет в Аде.
Например:
http://pascal.net.ru/for
http://pascal.net.ru/while
http://pascal.net.ru/begin
http://pascal.net.ru/Exit
http://pascal.net.ru/Integer
http://pascal.net.ru/array

Всё, что пишется про Паскаль, можно в уме переделывать на Аду.

Сообщение отредактировано: OCTAGRAM -


--------------------
If you want to get to the top, you have to start at the bottom
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


Как сделать окно вывода изображения на Паскале? Не просто вывода, а картинку, ну там типо карты и прочего. А и пока еще здесь, как создать модель/предмет/@, которой можно управлять. И как?


--------------------
Пора убить в себе человека...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Большевик–концептуал
**

Группа: Пользователи
Сообщений: 134
Пол: Мужской
Реальное имя: Иван Левашев
Jabber: octagram@jabber.ru
Skype: i.levashew
QQ: 3152538431
WeChat
Ада: Сторонник
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик
Turbo Pascal: Установлен

Репутация: -  0  +


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


--------------------
If you want to get to the top, you have to start at the bottom
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


Цитата(OCTAGRAM @ 8.02.2016 18:22) *

Для какого из Паскалей?

турбо, просто вывести на экран какие-то символы, а еще и управлять одним из них


--------------------
Пора убить в себе человека...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

2 страниц V  1 2 >
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 




- Текстовая версия 19.02.2018 11:20
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"