Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 17.03.2017, 00:12   #1 (permalink)
Viewer
Banned
 
Регистрация: 06.03.2017
Сообщений: 788
Сказал(а) спасибо: 0
Поблагодарили 18 раз(а) в 4 сообщениях
Репутация: 5680
По умолчанию ABC-Pascal

Рекомендую всем "паскалистам" обратить внимание на отечественную разработку ABC-Pascal.
Pascal-abc используется уже во многих школах, институтах..

Основные возможности:
  • Ряд расширений языка Pascal, в числе которых оператор foreach, внутриблочные описания переменных, автоопределение типа при описании, встроенные множества произвольных типов, case по строкам, упрощенный синтаксис модулей, методы в записях, операция new для создания объектов, определение тел методов внутри классов, целые произвольной длины, многомерные динамические массивы.
  • Самые современные средства языков программирования: обобщенные классы и подпрограммы, интерфейсы, перегрузка операций, λ-выражения, исключения, сборка мусора, методы расширения, безымянные классы, автоклассы.
  • Генерация эффективного кода для платформы .NET.
  • Высокая совместимость с Delphi.
  • Высокая скорость выполнения программ.
  • Возможность доступа к огромному количеству .NET-библиотек от контейнерных классов до средств работы с сетью.
  • Среда разработки с встроенным отладчиком, обеспечивающая подсказки по коду, переход к определению и реализации подпрограммы, шаблоны кода, автоформатирование кода.
  • Встроенный в среду разработки дизайнер форм для быстрого создания оконных приложений.
  • Простая и эффективная растровая графическая библиотека.
  • Средства параллельного программирования в виде директив OpenMP.
Viewer вне форума   Ответить с цитированием

Старый 17.03.2017, 00:12
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Обычно в схожих топиках содержится много информативных ответов

Pascal ABC
Pascal

Старый 17.03.2017, 11:33   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Viewer Посмотреть сообщение
Если хотите и далее использовать "Паскаль", рекомендую уйти от примитивных DOS-версий Паскаля, даже от Delphi. Есть прекрасная отечественная разработка (бесплатная для использования), которая внедряется (внедрена) в процесс обучения во многих школах, институтах. Еще раз, рекомендую: ABC-Pascal (pascalabc.net). В том числе, рекомендую и Vladimis_S обратить внимание на этот продукт.
Простите за цитату из другой темы (там, кстати, пассаж об АВС ни к селу, ни к городу, а потому удалён), но таинственный Vladimis_S (думаю, что речь обо мне, хотя я Vladimir_S) давным-давно "обратил внимание на этот продукт", да внимание настолько пристальное, что уже несколько лет не устаёт костерить "этот продукт" всеми словами радуги на грани ненормативной лексики.
Вот лишь несколько моментов:
1. Типизированных констант (в частности, констант-массивов) не понимает.
2. Вместо стройной системы-иерархии целых типов в НОРМАЛЬНОМ Паскале:
Знаковые:
ShortInt (1 byte) - Integer (2 byte) - LongInt (4 byte) - Int64 (8 byte)
Беззнаковые:
Byte (1 byte) - Word (2 byte) - Cardinal (4 byte) - QWord (8 byte)
предлагается какая-то маловразумительная каша: Integer стал четырехбайтовым, Word вообще непонятно то ли есть, то ли нет...
3. Поля записи String необъявленной длины не принимаются.
4. Плохая совместимость типов Char и String: например, при подстановке переменной типа Char в оператор Val возникает ошибка.
5. Плохо понимаются ситуации, когда границы цикла for..to задаются не числами или простыми идентификаторами, а вычисляются непосредственно в цикле. Возникают ошибки.
6. Модуль CRT (если он в АВС вообще есть) - тихий ужас: выброшены напрочь нужнейшие функции: снятие системного времени и даты. Спасибо, дорогие умельцы!
Список можно продолжать.

Теперь несколько соображений о сути проекта, как такового.
Ни для кого не секрет, что программирование не знает госграниц, а потому очевидно, что следует пользоваться общепризнанными языками и пакетами. Попытки отгородиться тут абсолютно бесперспективны. И, казалось бы, - есть простой Паскаль (Turbo, Free, Borland), есть современный пакет Delphi, правда, платный (и хорошо платный), но есть упрощенный бесплатный вариант - Lazarus. Живи да радуйся. И зачем еще изобретать велосипед? А вот затем, что это - чистейшая конъюнктура, рассчитанная на не слишком грамотных чинуш. Ну как же - это ведь НАШЕ! Отечественное!! Уря!!! И пошло впаривание этой недоделки в ВУЗы...
Ладно, заканчиваю, а то за себя не ручаюсь, а наш форум дети посещают...
Vladimir_S вне форума   Ответить с цитированием
Старый 17.03.2017, 22:34   #3 (permalink)
Viewer
Banned
 
Регистрация: 06.03.2017
Сообщений: 788
Сказал(а) спасибо: 0
Поблагодарили 18 раз(а) в 4 сообщениях
Репутация: 5680
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
а то за себя не ручаюсь
Значит это не Ваше, значит застыли в прошлом веке - бывает.
Viewer вне форума   Ответить с цитированием
Старый 17.03.2017, 22:45   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Viewer Посмотреть сообщение
значит застыли в прошлом веке - бывает
Угу.
Анекдот почему-то вспомнился:

Встречаются два приятеля.
- Был вчера на концерте группы "Гости из будущего".
- И как?
- Знаешь... хреновое у нас будущее!
Vladimir_S вне форума   Ответить с цитированием
Старый 17.03.2017, 23:04   #5 (permalink)
Viewer
Banned
 
Регистрация: 06.03.2017
Сообщений: 788
Сказал(а) спасибо: 0
Поблагодарили 18 раз(а) в 4 сообщениях
Репутация: 5680
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
Встречаются два приятеля.
Вряд ли мы приятели.
Если не замечать тенденции развития языков - можно до упора хвалить dos-pascal и обучать ему стьюдентов методом решения за них примитивных задачек. Впрочем, это Ваше дело.
Viewer вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 18.03.2017, 09:07   #6 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Viewer Посмотреть сообщение
Вряд ли мы приятели.
Боже упаси - не набиваюсь! Ни в какой мере.
Цитата:
Сообщение от Viewer Посмотреть сообщение
Впрочем, это Ваше дело.
Эт-точно.
Vladimir_S вне форума   Ответить с цитированием
Старый 18.03.2017, 19:21   #7 (permalink)
Viewer
Banned
 
Регистрация: 06.03.2017
Сообщений: 788
Сказал(а) спасибо: 0
Поблагодарили 18 раз(а) в 4 сообщениях
Репутация: 5680
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
давным-давно "обратил внимание на этот продукт", да внимание настолько пристальное, что уже несколько лет не устаёт костерить "этот продукт" всеми словами радуги на грани ненормативной лексики.
Вот лишь несколько моментов:
"1. Типизированных констант (в частности, констант-массивов) не понимает.
2. Вместо стройной системы-иерархии целых типов в НОРМАЛЬНОМ Паскале:
Знаковые:
ShortInt (1 byte) - Integer (2 byte) - LongInt (4 byte) - Int64 (8 byte)
Беззнаковые:
Byte (1 byte) - Word (2 byte) - Cardinal (4 byte) - QWord (8 byte)
предлагается какая-то маловразумительная каша: Integer стал четырехбайтовым, Word вообще непонятно то ли есть, то ли нет...
3. Поля записи String необъявленной длины не принимаются.
4. Плохая совместимость типов Char и String: например, при подстановке переменной типа Char в оператор Val возникает ошибка.
5. Плохо понимаются ситуации, когда границы цикла for..to задаются не числами или простыми идентификаторами, а вычисляются непосредственно в цикле. Возникают ошибки.
6. Модуль CRT (если он в АВС вообще есть) - тихий ужас: выброшены напрочь нужнейшие функции: снятие системного времени и даты. Спасибо, дорогие умельцы!
Список можно продолжать."


Ответы на Ваши заблуждения.

1. Типизированных констант (в частности, констант-массивов) не понимает.
Понимает, но есть ньюансы.
В современных многих языках программирования, константы - это константы, переменные - это переменные.
Это следствие повышения безопасности языка и программ.
Типизированные константы в Pascal - это, на самом деле, объявленные и инициализированные переменные. Из этого следует, что в дальнейшем этим "константам" можно присваивать новые значения.
Поскольку это нарушает безопасность программ, поэтому в наследниках Pascal, например ADA, типизированные константы - это именно константы на все время жизни программы.

Пример 1:
const
strConstMy: string = 'ABC';
arstrConstMy = ['A', 'B', 'C'];
begin
writeln(strConstMy);
writeln(arstrConstMy);
strConstMy := 'BCA'; // вызовет исключение времени компиляции.
end.

2. Вместо стройной системы-иерархии целых типов в НОРМАЛЬНОМ Паскале:
Ответ: это незнание исторических принципов иерархии целых чисел.
Тип integer - это всегда был целый тип, не гарантированный по длине и часто привязанный к разрядности платформы.
На машинах 16р, 32р - это соответственно 2, 4 байт.

На ABC поддерживаются:
Тип Размер, байт Диапазон значений
shortint 1 -128..127
smallint 2 -32768..32767
integer, longint 4 -2147483648..2147483647
int64 8 -9223372036854775808..9223372036854775807
byte 1 0..255
word 2 0..65535
longword, cardinal 4 0..4294967295
uint64 8 0..18446744073709551615
BigInteger переменный неограниченный

3. Поля записи String необъявленной длины не принимаются.
Ответ: это заблуждение.
Пример 3:
var
s: string;
s1: string[9];
s2: shortstring; // синоним string[255]
const
ch: char = '7';
begin
SetLength(s,20);
writeln(s.Length);
var ret, err: integer;
Val(ch,ret,err);
writeln(ret);
end.

Есть особенность. Тип string - это объект со своими полями и методами, причем формат - Unicode.
Это обычная практика в современных языках программирования.
Тип Char - также имеет формат Unicode.
Функция Val() прекрасно работает и с типом string и с типом char.

5. Плохо понимаются ситуации, когда границы цикла for..to задаются не числами или простыми идентификаторами, а вычисляются непосредственно в цикле. Возникают ошибки.
Ответ: за такой стиль программирования положено пожизненное отлучение от профессии.
Вы в каком веке застряли?
Более того, инициализация цикла в ABC производится непосредственно в начале цикла локальной переменной, которая вне цикла недоступна, а внутри цикла ее изменение порождает логическую ошибку и это правильно.

Пример 5:
for var i := 1 to 10 do
Print(i);
for i: integer := 1 to 9 do
write(i,' ');
Переменная-параметр цикла может иметь любой порядковый тип.
var en: (red,green,blue,white);
for en := red to blue do
write(Ord(en):2);

6. Модуль CRT (если он в АВС вообще есть) - тихий ужас: выброшены напрочь нужнейшие функции: снятие системного времени и даты.
Ответ: Этот "ужас" от Вашего незнания языка PascalABC.Net.
Есть стандартные модули GraphABC и ABCSprites.
После подключения пространства имен System становятся доступными все его возможности:

Пример 6:
uses System;
begin
var d: DateTime := DateTime.Now;
writeln(d.Day,'.',d.Month,'.',d.Year);
writeln(d.Hour,':',d.Minute,':',d.Second);
end.

P.S.
Успехов Вам с Вашим "НОРМАЛЬНЫМ" Паскалем!
Viewer вне форума   Ответить с цитированием
Старый 18.03.2017, 19:38   #8 (permalink)
Viewer
Banned
 
Регистрация: 06.03.2017
Сообщений: 788
Сказал(а) спасибо: 0
Поблагодарили 18 раз(а) в 4 сообщениях
Репутация: 5680
По умолчанию

ABC прекрасно понимает хоть так:
type

Person = record
Name: string;
Age: integer;
end;
хоть так:
type
Person = record
Name: string[32];
Age: integer;
end;
Viewer вне форума   Ответить с цитированием
Старый 18.03.2017, 21:56   #9 (permalink)
Viewer
Banned
 
Регистрация: 06.03.2017
Сообщений: 788
Сказал(а) спасибо: 0
Поблагодарили 18 раз(а) в 4 сообщениях
Репутация: 5680
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
Теперь несколько соображений о сути проекта, как такового.
Ни для кого не секрет, что программирование не знает госграниц, а потому очевидно, что следует пользоваться общепризнанными языками и пакетами.
Живи да радуйся. И зачем еще изобретать велосипед? А вот затем, что это - чистейшая конъюнктура, рассчитанная на не слишком грамотных чинуш. Ну как же - это ведь НАШЕ! Отечественное!! Уря!!! И пошло впаривание этой недоделки в ВУЗы...
посещают...
Очень показательно Ваше мнение об Отечестве.

Однако, есть те, кому "Мила нам добра весть о нашей стороне. Отечества и дым нам сладок и приятен." (С) А.С. Грибоедов.

Ни для кого не секрет, что госграницы сейчас открыты. Казалось бы - езжай Туды, живи, да радуйся.

Те, кто создавал обсуждаемый продукт, после окончания отечественного ВУЗ-а, работают и в РФ и за рубежом и это нормально.

Продукт продолжает развиваться. PascalABC.NET ни в коей мере не замена коммерческим продуктам, более того - проектирование визуальных интерфейсов там сведено к минимуму, ибо обучение программированию - это, прежде всего, алгоритмика и современные стили, синтаксис и объектные возможности, а не бездумное накидывание "баттонов" на формы.

С уважением.
Viewer - программист с более чем 40-летним стажем.
Viewer вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 22:14.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.