Аннотация: На этой лекции вы познакомитесь с великолепной бесплатной средой разработки программ — Lazarus. Узнаете об истории развития языков программирования, о бесплатной лицензии GNU, о том, где взять последнюю версию Lazarus и как установить ее, напишите свое первое приложение.
Цель лекции
Знакомство с историей развития языков программирования и диалектов Pascal ; первое знакомство с IDE Lazarus и компилятором Free Pascal ; изучение компонентов TForm, TLabel, TButton; создание первого проекта.
Исторический экскурс
Историю развития языков программирования, пожалуй, можно начать с первой в мире программистки Ады Лавлейс (Августа Ада Кинг, графиня Лавлейс, математик). Ада Лавлейс родилась 10 декабря 1815 г. в Лондоне, была известна описанием вычислительной машины (механическая машина Ч. Бэббиджа), в разработке которой она принимала участие, и созданием первой программы для нее. Ввела в употребление термины «цикл» и «рабочая ячейка «. В честь Ады Лавлейс в 1975 году был назван язык программирования Ада.
[Пишем программы на Lazarus]. Пишем калькулятор
Реально языки программирования получили развитие в 1945-1955 гг., когда появились первые ЭВМ (Электронные Вычислительные Машины), для которых программы составлялись вначале на машинном языке, а затем и на Ассемблере — мнемоническом представлении машинного языка. И если «чистым» машинным языком уже давно никто не пользуется, то Ассемблер все еще применяется там, где требуется либо сверхмалый размер программы, либо большая скорость ее работы, то есть, в основном, для создания критических участков ОС (Операционных Систем) или драйверов, для программирования микропроцессоров в различных платах, устройствах. Написать большую современную программу на Ассемблере — невероятно сложная, а то и невыполнимая задача.
В 1954 году появился первый язык программирования высокого уровня Фортран, и началась новая эра развития программирования.
Язык высокого уровня (или высокоуровневый язык) — это язык программирования, наиболее приближенный к человеческому языку. Он содержит смысловые конструкции, описывает структуры данных, выполняет над ними различные операции.
Современные языки высокого уровня оперируют уже целыми объектами — сложными конструкциями, обладающими определенным состоянием и поведением.
Для обучения программированию и для решения задач общего назначения наибольшее распространение получил язык программирования высокого уровня Паскаль, созданный в 1968-1969 гг. профессором Никлаусом Виртом, и названный в честь выдающегося французского математика Блеза Паскаля (между прочим, создателя первой в мире механической машины, складывающей два числа). Этот язык выгодно отличается от других языков программирования более строгими правилами в описании и использовании данных различного типа. Паскаль — структурный язык, небольшой и эффективный, способствующий выработке у программиста хорошего стиля программирования. В школах и ВУЗах всех стран в мире по сей день изучают ту или иную реализацию Паскаля.
Lazarus — простота, наглядность и скорость разработки.
Поскольку Lazarus основан на Паскале (точнее, на Объектном Паскале), историю других высокоуровневых языков в рамках данного курса мы рассматривать не будем.
В 1983 г. фирма Borland, известная разработкой Delphi — платного предшественника Lazarus, выпустила Turbo Pascal — интегрированную среду разработки программ на языке Паскаль . Turbo Pascal — это компилятор , компоновщик, редактор кода и отладчик в одном окне. Он подобен швейцарскому ножу, где множество разных инструментов вмонтировано в единое устройство. Для программистов Turbo Pascal примечателен тем, что он стал своеобразным прародителем сред быстрой разработки программ.
В 1986 г. появился язык Object Pascal (Объектный Паскаль ), разработанный в фирме Apple Computer . Этот диалект Паскаля уже мог оперировать объектами.
В 1989 г. объектное расширение Паскаля было добавлено и в Turbo Pascal фирмы Borland.
В 1994 г. была выпущена первая версия Delphi — Графическая интегрированная среда быстрой разработки программ для Windows . Этот факт дал невероятный толчок развитию таких сред, в которых разработка интерфейса программы для программиста вместо нудной рутины, превращалась в забавный конструктор форм. В современных средах можно создать программу, даже не дотрагиваясь до клавиатуры — исключительно с помощью мыши. Правда, подобной программе вряд ли можно будет придать сколь-либо полезные функции.
Все эти языки и среды были платными, часто оказывались недоступны образовательным учреждениям в силу своей дороговизны. В 1993 г. начались работы над проектом Free Pascal (FPC — Free Pascal Compiler ). Первая версия FPC появилась лишь в июле 2000 г., она была полностью бесплатная и поддерживала множество платформ: Windows , Linux, FreeBSD, Mac OS X и т.п.
FPC — это бесплатный открытый проект, его исходные коды для изучения или модификации доступны каждому! Чуть позже появился Lazarus — единственная в мире бесплатная графическая среда для быстрой разработки программ, использующая компилятор FPC. Как и FPC, Lazarus распространяется на условиях лицензии GNU GPL ( General Public License). Если не особо вдаваться в юридические подробности, то GNU GPL — это лицензия , предоставляющая пользователю права свободно и бесплатно копировать, модифицировать и распространять (в том числе и на коммерческой основе) данный продукт. По этой же лицензии распространяются все версии ОС (Операционной Системы) Linux — бесплатном и довольно серьезном конкуренте Windows .
Итак, мы с вами будем говорить о последней (на момент написания курса) версии Lazarus — 1.0.10, работающей с компилятором FPC 2.6.2. Lazarus — молодой и бурно-развивающийся проект, новые версии выходят довольно часто, так что вы, вероятно, будете пользоваться более свежей версией. Тем не менее, на курсе рассматриваются фундаментальные вопросы программирования, которые едва ли будут пересматриваться. Так что можете изучать предоставленный материал, пользуясь версией Lazarus 1.0.10 или любой более свежей.
В силу того, что подавляющее большинство пользователей по -прежнему работает в операционной системе Windows , мы будем рассматривать работу с Lazarus именно в этой среде ( автор использовал ОС Windows XP SP3). Рамки курса небезграничны, а описание особенностей работы в других платформах может лишь запутать учащихся на начальном этапе.
Впрочем, разработка программ под другие платформы имеет не так уж много отличий, чтобы создать вам непреодолимые трудности при переходе на другую платформу.
Что такое Lazarus?
Lazarus — это IDE (Integrated Development Environment) — Интегрированная Среда Разработки программ, использующая компилятор FPC (Free Pascal Compiler), редакторы кода, форм, Инспектор Объектов, отладчик и многие другие инструменты.
Еще говорят, что среда Lazarus — это RAD (Rapid Application Development) — среда Быстрой Разработки Приложений.
До сих пор среды разработки программ, подобные Lazarus, были исключительно платными. Lazarus же стал первой (и пока единственной) IDE , доступной образовательным и государственным учреждениям совершенно бесплатно. Более того, Lazarus является проектом Open Source — проектом с открытым исходным кодом. Многие программисты по всему миру принимают участие в его развитии, исходный код Lazarus доступен для изучения и модификации. Lazarus имеет поддержку множества языков, в том числе и русского, что выгодно отличает его от других IDE .
Где взять?
Lazarus, как уже говорилось, — бесплатный и свободно распространяемый продукт. Благодаря этому, Lazarus все чаще используют для изучения программирования в школах и ВУЗах, а также на многих предприятиях. Но где его взять? На официальном сайте производителя: http://lazarus.freepascal.org
В правой верхней части сайта вы увидите следующую картинку:

Рис. 1.1. Выбор и закачка необходимой реализации
Здесь вы сможете выбрать реализацию именно под вашу платформу, от Windows до Mac OS X, как 32-х так и 64-х разрядную. При написании курса использовался 32-х разрядный Lazarus для платформы Windows .
Нажав кнопку «Download Now» вы скачаете последнюю версию Lazarus. Кроме того, выбрать последнюю необходимую реализацию и скачать ее вы можете по адресу: http://sourceforge.net/projects/lazarus/files/
В этом случае, перейдя по ссылкам, вы получите доступ к закачке нескольких файлов, например,
- lazarus-1.0.10-fpc-2.6.2-win32.exe
- lazarus-1.0.10-fpc-2.6.2-cross-arm-wince-win32.exe
- README.txt
Нам нужен только первый файл из этого списка. Второй файл является расширением для разработки программ под Windows CE (она же WinCE) — это вариант операционной системы Microsoft Windows для наладонных компьютеров, смартфонов и встраиваемых систем. На данном курсе эту возможность мы рассматривать не будем. Последний файл — простой текстовый файл с информацией о версии, он нам тоже не нужен.
Как установить?
Lazarus устанавливается достаточно просто. Собственно, ничего менять нам не придется, оставим все параметры, предложенные установщиком по умолчанию. Для начала выберем русский язык установки, затем все время будем нажимать кнопки «Далее». Лишь в предпоследнем окне установщика при желании можно поставить флажок «Создать значок на Рабочем столе».
Когда укажем все параметры, начнется установка Lazarus. Придется подождать пару минут, пока распакуются и скопируются множество файлов. И, наконец, кнопка «Завершить» для закрытия окна установщика. Все, Lazarus у нас есть! Мы можем его загрузить.
В самом начале Lazarus выглядит несколько неопрятно:

увеличить изображение
Рис. 1.2. Первый запуск Lazarus
Lazarus состоит из нескольких окон (которые стоит подравнять, чтобы они занимали весь рабочий стол и не мешали друг другу):
- Главное окно
- Инспектор объектов
- Редактор форм
- Редактор кода
- Окно сообщений

увеличить изображение
Рис. 1.3. Окна Lazarus
Главное окно
Главное окно состоит из следующих элементов:

Рис. 1.4. Главное окно Lazarus
- Главное меню содержит все команды, необходимые для правки, компиляции, отладки программы, для запуска различных вспомогательных утилит.
- Панель инструментов содержит кнопки чаще всего применяемых команд (эти же команды можно выполнить и с помощью Главного меню).
- Палитра компонентов содержит множество вкладок, на которых содержится богатый выбор компонентов из собственной библиотеки компонентов Lazarus — LCL (Lazarus Component Library).
Инспектор объектов
Окно Инспектора объектов состоит из двух частей:
- Дерево объектов, в котором в древовидной форме располагаются все объекты, используемые в текущей форме.
- Окно с вкладками, в котором можно настраивать различные свойства текущего объекта. Несмотря на то, что имеется 4 вкладки (Свойства, События, Избранное, Ограничения), чаще всего используются только первые две. О свойствах и событиях мы поговорим подробней в следующих лекциях.
Источник: intuit.ru
Lazarus
Lazarus is a Delphi compatible cross-platform IDE for Rapid Application Development. It has variety of components ready for use and a graphical form designer to easily create complex graphical user interfaces.
What can it do?
You can create your own open source or commercial applications. With Lazarus you can create file browsers, image viewers, database applications, graphics editing software, games, 3D software, medical analysis software or any other type of software.
Where to learn?
Lazarus has a huge community of people supporting each other. It include scientists and students, pupils and teachers, professionals and hobbyists. Our wiki provides tutorials, documentation and ideas. Our forums and mailing-list offer a space to ask questions and talk to users and the developers.
Источник: www.lazarus-ide.org
Lazarus как он есть
Довольно часто наше нежелание разбираться в вопросе и уверенность в собственной логике рождает неверные предположения. Эти предположения, высказанные как утверждения на публичной площадке, могут прочно осесть в чужих головах и сформировать ложные отрицательные представления.
Так в комментариях к недавней теме «Lazarus 1.0 увидел свет!» были высказаны некоторые неверные утверждения, а также задан ряд вопросов оставшихся без ответов. Являясь разработчиком Lazarus и FPC уже довольно продолжительное время, я могу и хочу дать ответ на большинство связанных с этими продуктами вопросов и развеять некоторые неверные предположения.
Утверждение: Размер исполняемых файлов оставляет желать лучшего. Виноват компилятор, компоновщик и др.
Некоторую информацию по данной теме можно получить на wiki-странице.

Итак, основная составляющая размера исполняемого файла — отладочная информация. Отладочную информацию добавляет компилятор FPC когда ему передан ключ «-g». FPC может генерировать 2 вида отладочной информации: устаревший stabs и современный dwarf (версии 2 или 3), что также определяется переданными компилятору ключами. Оба вида отладочной информации понимаются отладчиком gdb. В Lazarus включить/выключить отладочную информацию, а также определить ее вид можно на закладке «Компоновка» в параметрах проекта:
Если вы собираете проект под Windows или Linux, можно сформировать внешний файл отладочных символов. В этом случае в исполняемый файл отладочная информация добавляться не будет, а вместо нее будет помещена ссылка на внешний отладочный файл.
Исключение отладочной информации уменьшает размер пустого проекта с формой с 20Мб до 1,6Мб на Windows. Но, 1,6Мб тоже больше чем 300Кб, который выдавал Delphi 7 (Delphi XE, к примеру, уже выдает значительно больше из-за распухания RTTI). Дело тут не в компиляторе и не в компоновщике, которые делают свою работу верно, а все дело в LCL.
LCL — Lazarus Component Library архитектурно состоит их двух частей: фронтэнда — платформонезависимой библиотеки классов для разработчиков приложений (TForm, TButton, TLabel, . ) и бэкэнда — части отвечающей за реализацию этих компонент под конкретную платформу (win32, qt, gtk2, . ). При начальной реализации бэкэндов никто особо не задумывался о размере исполняемых файлов и писал общие методы, в которых обращался ко всем классам фронтэнда.
Например, следующий код из модуля lclinterfaceswin32win32proc.pp тянет в исполняемый файл классы TCustomGroupBox, TCustomTabControl, даже если вы их нигде не используете:
if (TheWinControl is TCustomGroupBox) then
begin
.
end else
if TheWinControl is TCustomTabControl then
begin
.
end;
Решить эту проблему может рефакторинг, но он требует значительных усилий и времени, которые в условиях нехватки рук возможно лучше потратить на решение других проблем. Надо сказать, что определенные усилия в этом направлении были приложены 2 или 3 года назад, что позволило сократить размер пустого проекта с формой на 300Кб.
Утверждение: Lazarus ставил однажды в Windows, и запомнилось, что даже простейшая программа с окном и кнопкой компилируется ооочень долго.
Проблема была, когда FPC использовал GNU компоновщик для Windows. Но, в FPC 2.2 (а сейчас Lazarus использует FPC 2.6) проблема была устранена разработкой встроенного компоновщика для Windows. Кроме того, на тот момент компоновщик GNU не умел собирать под платформу Win64, что тоже послужило толчком к разработке собственного встроенного компоновщика. Надо заметить, что под Linux и Darwin таких проблем со скоростью сборки не было и нет (и как следствие до сих пор нет и собственного компоновщика под эти платформы).
Сейчас сборка и запуск пустого проекта с формой на моей машине занимает не более 2х секунд.
Вопрос: Здорово, если в Lazarus появится нормальный докинг, как в Delphi 2006, к примеру. Сильно повысит удобство интерфейса. Хотя, может быть, он там уже есть?
Докинг можно включить сборкой дополнительного пакета, но это делать не рекомендуется, так как пока присутствует ряд нерешенных проблем. К версии 1.2 докинг будет готов и скорее всего сразу встроен в среду.
Утверждение: «Mac OS X: 10.4, LCL только 32bit, не-LCL могут быть 64bit». Да уж, впечатляет.
Во-первых, имеется в виду, что Lazarus собирает проекты под Mac OS X не ниже версии 10.4. То есть поддерживаются и 10.5 и 10.6 и 10.7 и 10.8 (на которой у меня сейчас запущен Lazarus). LCL проекты могут быть только 32бит.
Это связано с тем, что на Max OS X существуют 2 основные системные библиотеки: carbon и cocoa. Carbon появилась первой и представляла собой библиотеку функций. Не было никаких проблем начать строить на ее основе LCL бэкэнд, что и было сделано. После Apple представил еще одну библиотеку cocoa, которая вместо функций содержит классы Objective-C. Позже Apple объявил, что не будет делать библиотеку carbon 64 разрядной, и вообще новые приложения надо разрабатывать только под cocoa.
Для взаимодействия с Objective-C классами в FPC был добавлен диалект, получивший название Objective-Pascal. В Lazarus был также добавлен бэкэнд для cocoa, но он в настоящее время находится в стадии ранней разработки. Возможно (я приложу к этому усилия), к версии 1.2 он будет на уровне бэкэнда под gtk2 и qt.
- Разработка веб-сайтов
- Delphi
Источник: habr.com