LINUX.ORG.RU

Книжка о Free Pascal и Lazarus под открытой лицензией

 , , ,


1

1

23 декабря на сайте компании «Альт Линукс» появилась новость о выходе книги «Free Pascal и Lazarus: Учебник по программированию» под лицензией GNU FDL.

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

Страница с ссылкой на книгу.

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



Проверено: anonymous_incognito ()
Последнее исправление: post-factum (всего исправлений: 3)
Ответ на: комментарий от alx_me

Есть в современном паскале шаблоны, учи матчасть! А ещё если идеологии типизации паскаля и необходимости в ней не можеш понять, то не психуй как истеричка - и тебя вылечат! Достоинство FPC в том что он идет сразу следом за С/С++/Objective C и берет самое лучшее из них, а дерьмо которое успели нахвататься эти «передовые» языки вроде раздельной компиляции, множественного наследования и пр.. оставляет для дрочеров-С++ кодеров! Вот..

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

просто это самое сложное что есть в паскале

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

Сюрприз! Для C стандарт на язык и на библиотеку один и тот же!

Мда. Что можно сказать на утверждение, что STD есть C, а C есть STD? Для паскаля может библиотека и является частью языка... Впрочем, не важно. Хочу лишь заметить, что вызов тойже функции из STD вместо вот такой формы:

pow(x,y);

Может выглядеть и так:

push x
push y
call powd
mov rez, ax

Впрочем для тебя похоже нет разницы между языком программирования и его библиотекой.

Возвращаясь к самому началу разговора, это повод не использовать pow()? Или что? При каких обстоятельствах школьник столкнётся с отсутствием pow() в стандартном C?

Как эти вопросы относится ко мне?

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

А потому что механизма разрешения типов нормального нет

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

no-dashi ★★★★★
()
Ответ на: комментарий от baverman

>Марьивановна, почему writeln 1/2*2 выводит ноль?

Не знаю, как там сейчас и/или у вас, но у меня в школе информатика начиналась с систем счислений и двоичной арифметики в частности.

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

>Похоже у вам попалась программа для малолетних вундеркиндов - в той программе, что я видел, в 5м классе успевают только десятичные дроби и операции с ними пройти, а вот для классов с математическим уклоном определение функций давалось в 9 классе (по себе помню, хоть это и было 16 лет назад)

как человек, записавший определение функции в тетрадочку в 5-м классе, поинтересуюсь, где это так деградировало образование то?

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

>Паскаль создавался для обучения и только для обучения.

А вот при озвучивании этого аргумента, я реально теряю контроль над собой. НУ И ЧТО!?

Какое отношение Борландовский паскаль к обучению? Или сабжевый паскаль? Ноль.

Нет, Паскаль - язык без сомнения знаковый. Там было реализовано много актуальных идей того времени. Но прошло 40 (!!!) лет. За это время наука на месте не стояла. И даже Виртом были сделаны языки-последователи паскаля, у которых грамматика _проще_.

В 80-х годах очень активно стали использоваться положения теории типов, SML тот же самый, и еще много исследовательских языков из которых потом родился хаскель. Опять же, появились последователи Модулы, Смаллток и С++. Появился CLOS - идеологически отличная от Модулы реализация ООП.

И даже Вирт в начале 90-х сделал ComponentPascal. А потом появились работы по формализации ООП.

А в начале 2000-х появилась Скала. Тоже знаковый язык...

А еще есть D 2.0. И когда он будет готов, много и много хороших идей войдут в область разработки системообразующего ПО, там где сейчас присутствует C++.

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

> про математику слышали вообще? Результат деление двух вещественных чисел принадлежит множеству вещественных.

дяденька, а к какому множеству чисел принадлежит результат деления двух целых чисел?

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

>Паскаль идеален для обучения
Паскаль идеален для обучения Паскалю. Есть динамические языки программирования - зачем школьнику знать о типах вообще и о выделении памяти в частности? А если скажете, что это нужно, тогда объясните зачем ученика приучать к тому, что строка - базовый тип?

eugene2k
()

Только один вопрос: Lazarus Component Library (LCL) да и сам Lazarus можно ли применять совместно с GNU Pascal Compiler (GPC)? Если нет, то данное поделие отправляется в биореактор со скоростью звука.

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от Macil

Процедурное программирование _кончилось_. Не используется оно больше нигде в чистом виде.

И как оно там в 70х с процедурным Pascal'ем?

Andru ★★★★
()
Ответ на: комментарий от no-dashi

А дяденьке вообще в домёк, что эти ваши вещественные числа из «математики» и эти наши double, long double и real мало что общего имеют. Вы точность игноируете, вы сейчас PHP программист (как и многие, в прошлом, пасквилянты)? И Real и double и int это _модели_. И математика тут специальная это учитывающая. И если вы этот факт игнорируете вы себя тем самым выставляете неадекватом в нехорошем смысле.

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

дяденька, а к какому множеству чисел принадлежит результат деления двух целых чисел?

Результатом деления двух целых по определнию является рациональное число, мальчик. И любое целое является одновременно также рациональным, так что можно абсолютно корректно утверждать: результатом операции деления целых (Integer) либо рациональных (Real) чисел в любом сочетании является рациональное (Real) число. Что и задекларировано в паскале.

no-dashi ★★★★★
()
Ответ на: комментарий от alx_me

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

Этого кулибина-недоучку кто-нибудь пристрелит или нет?

Led ★★★☆☆
()

Одному мне показалось - «ЛАЖАрус»?

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

>как человек, записавший определение функции в тетрадочку в 5-м классе, поинтересуюсь, где это так деградировало образование то?

У меня интересный вопрос: а что это было за определение? Мне просто интересно.

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

> Паскаль идеален для обучения Паскалю.

Безусловно.

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

Затем, что в школе _учатся_. То есть люди поймут что и как устроено. Этому и надо учить.

А если скажете, что это нужно, тогда объясните зачем ученика приучать к тому, что строка - базовый тип?

Ни в коем случае. Надо приучать к данным и их представлениям. Нужно показать что одни и теже байты могут в зависимости от контекста быть строкой, числом (int float), филькиной грамотой. Познакомить с ENDIANESS и прочая реальность. Потом делайте из него хоть явакодера. но суть надо расказать.

alx_me ★★☆
()

А у нас на информатике BASIC был. Чё? Для школы самое оно.

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

>Только один вопрос: Lazarus Component Library (LCL) да и сам Lazarus можно ли применять совместно с GNU Pascal Compiler (GPC)? Если нет, то данное поделие отправляется в биореактор со скоростью звука.

GNU Pascal Compiler ещё шевелитьсо? Последние релизы вроде 2005-го?.. Зачем тыкать палочкой трупика и пытаться быть совместимым с трупиком?

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

И математика тут специальная это учитывающая

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

no-dashi ★★★★★
()
Ответ на: комментарий от ladserg

> Может выглядеть и так:

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

Впрочем для тебя похоже нет разницы между языком программирования и его библиотекой.

Речь шла об отсутствии операции возведения в степень. Я указал, что в стандартном C это операция реализована. Что непонятно?

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

да, перечитал. противоречий со своим ответом не нашёл.

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

Надо приучать к данным и их представлениям. Нужно показать что одни и теже байты могут в зависимости от контекста быть строкой, числом (int float), филькиной грамотой. Познакомить с ENDIANESS и прочая реальность. Потом делайте из него хоть явакодера. но суть надо расказать.

Школьника? Ню-ню, Это даже студенты не осиливают.

baverman ★★★
()

Учебник необходимый, ибо с переходом на НацОСи в школах все равно Паскаль никуда не девается, а ТурбоПаскалик не заводится ...

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

Речь шла об отсутствии операции возведения в степень. Я указал, что в стандартном C это операция реализована.

Ты соврал

Led ★★★☆☆
()

Как обычно, C/C++ кодеры доставляют!

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

> Результатом деления двух целых по определнию является рациональное число, мальчик. И любое целое является одновременно также рациональным, так что можно абсолютно корректно утверждать: результатом операции деления целых(Integer) либо рациональных (Real) чисел в любом сочетании является рациональное (Real) число. Что и задекларировано в паскале

Ответ не правильный. Вы бы за него в 10 классе безусловно получили бы 5. Отсюда вывод что школу вы ещё не закончили. В нашей computer science всё ограничивается точностью. То есть наши real и ваши строго математически совершенно не одно и тоже. Именно поэтому математики так и не любят нас, программистов. Мы принебрегаем точностью. Они оперируют бесконечностями, а мы дискретами. у любого long double счётное число значений, у множества (R) бесконечно. То есть вы пренебрегли главным свойством множеств и смеете мы что-то утверждать. Мне грустно что такие специалисты собираются учить молодёжь.

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

> Школьника? Ню-ню, Это даже студенты не осиливают.

Не знаю я в 10 классе ходил в наш институт на занятия, там это было.

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

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

baverman ★★★
()

Книга, конечно, не идеальна, но для школьников может быть полезна. «Одобрямс!» (с) :)

quickquest ★★★★★
()
Ответ на: комментарий от no-dashi

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

Вы опять суетитесь, и опять обманываете общественность.исключения выбрасывается только тогда когда это не запрещает разработчик, я про try/catch, а не про аппаратные. Далее говоря о потере точности я говорил про такие представления как double и int. Между тем существуют библиотеки не теряющие точность. У них есть разные подходы и ограничения. Они безусловно не универсальные но они есть. Это численно-аналитические и строго аналитические - при определённых ограничениях вообще не теряющие точность. И без ограничения разрядной сетки (память и время в обмен на точность) - тоже куча ограничений. Короче не люблю я визжащих товарищей у меня от них изжога.

alx_me ★★☆
()
Ответ на: комментарий от no-dashi

Причина разногласий видимо в том, что в С++ операцию деления можно переопределить, по умолчанию в Си/С++ int/int возвращает целое. А если быть более точным, то результат зависит от приёмника. Если результат помещается в целое, то и результат будет целое.

Если описывать оператор деления языком С++, то определения для двух случаев (приёмник целое и вещественное) будут выглядеть так:

int operator / (int,int);
float operator / (int,int);

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

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

Например для случая:

std::cout << 2/3;

По умолчанию будет возвращено деление на цело, для случая:

std::cout << 2/3.0;

или

std::cout << float(2)/3;

Будет возвращён целочисленный вещественный результат.

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

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

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

если есть предмет «информатика» - должен быть предмет информатика, а не курсы оператора ПК. А для курсов оператора ПК программирование никаким боком не нужно.

p.s. батфайлы и шеллскрипты всяко проще паскаля, а позволяют неискушенному человеку гораздо больше

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

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

И с этим знанием, полученным в школе, пошёл бы учиться в гуманитарный или экономический университет?

Паскаль в гуманитарных вузах тоже не нужен. А у нормальных экономистов (а не бухтёлок и манагеров) обязательно должна быть серьезная математическая подготовка.

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

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

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

>От вас не ожидал. гав гав.

Ты тоже считаешь, что операция и функция в C - одно и то же?

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

GNU Pascal Compiler ещё шевелитьсо? Последние релизы вроде 2005-го?.. Зачем тыкать палочкой трупика и пытаться быть совместимым с трупиком?

Потому что free pascal имеет сильно ограниченную сферу применения и потому, раз поддержка GPC брошена, тогда и паскаль должен умереть и перспективы у него нет.

Шанс на реабилитацию в моих глазах: даже не знаю как задать вопрос... не силен в компиляторах... но есть ли у Lazarus и FP какой-либо фронтэнд к современным модульным компиляторам/оптимизаторам (к GCC мы выяснили есть, но сильно устарел) и так далее? =) К примеру, у GCC есть backend к архитектуре AVR32, экзотика. Беру GDC и программа на D работает и там. Надеюсь вопрос был понят :)

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от alx_me

>То есть люди поймут что и как устроено.
Если так необходимо научить 12ти-16ти летнего школьника/школьницу, тому как все устроено, то учить надо ассемблеру. Есть подозрения, что на самом деле в школе цель - дать базовые знания, а не научить тому как устроен компьютер. А в этом случае какой-нибудь динамический язык с простым синтаксисом будет более простым для изучения.

Нужно показать что одни и теже байты могут в зависимости от контекста быть строкой, числом (int float), филькиной грамотой.

Здорово. Как Паскаль позволяет показать каким числом будет «Hi!»?

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

[quote]разницы между айти специалистом и учителем информатики по-твоему нет?[/quote]

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

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

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

Если б ты учился в школе, то знал бы, что в математике (сюрприз!) тоже есть +0 и -0

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

> А если быть более точным, то результат зависит от приёмника. Если результат помещается в целое, то и результат будет целое.

результат не зависит от приёмника. но при выполнении операции присваивания может выполняться явное или неявное приведение типов.

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

с какого перепуга? он вполне справляется со своими задачами...

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

>Лет 30 назад появились языки достойнее паскаля. Лет 20 назад появились новые теоретические разработки, которые в паскале не отражены.

а можно кроме метанирования конкретные примеры...

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

>Если так необходимо научить 12ти-16ти летнего школьника/школьницу, тому как все устроено, то учить надо ассемблеру.

Какому? Открою тебе тайну: ассемблеров много, и они слабо похожи друг на друга. А теперь - держись крепче: ассемблер, фактически, - вовсе не язык программирования, а мнемоническое представление машинных кодов.

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

>Процедурное программирование _кончилось_. Не используется оно больше нигде в чистом виде.

Это бред.. на каких веществах сидим то?

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

костыль на костыле сидит и костылем погоняет

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

>dosemu

Мне кажется, он из коробки не идет с школоАльтом.

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