автор не призывает вас переходить на конфликт только из-за факта ущербности таких языков.
он также не призывает вас в сию же минуту учить программированию по Паскалю или, Боже упаси, Бейсику.
он просто делится впечатлениями, не более того.
Дата создания: 11 февраля 2022 года
Ссылки на оригинал нет!
План поста:
- История создания
- Delphi 7 и все его прелести
Сейчас, наверно, на меня набросится некоторое кол-во читателей с обезьяними помоями после какого-нибудь Хауди Хо и с тем фактом, что Delphi мёртв, неактуален, на нём не заработать и вообще ты что-то нормальное пробовал? Да, я пробовал Python, но в книжках, кроме красивого синтаксиса, тебе не объяснят про логику и не будут говорить, что она нужна. C# в то же ведро. Давайте сегодня не будем говорить про это. Я, как новичок, врубился в логику только после того, как я открыл учебник информатики и книгу от авторов PascalABC.NET "PascalABC.NET: введение в современное программирование". Для начала очень рекомендую. Но сегодня я не буду затрагивать тему современного программирования, а затрону что-то старое и действительно шикарное, которое работает, не кукарекает и не требует ресурсов компьютера. Это - старый, добрый Delphi 7 версии, которую мне порекомендовали в IRC. И действительно, если ты начинаешь понимать хоть какую-то логику, то ты можешь писать программы под него, имхо синтаксис, как таковой, у Паскаля слишком лёгкий. Поэтому ты не думаешь о том, как решить очередную ошибку "Invalid syntax" у Питона, а думаешь о том, как организовать алгоритм той или иной кнопки. Если вы пришли сюда за тем, чтобы обосрать меня где-нибудь - пожалуйста, уйдите. Просто уйдите, я вас прошу. Сегодня - обзор Delphi 7.
История создания
Начнём с немного исторического аспекта из учебника информатики 8 класса. Паскаль был разработан в 70х товарищем Никлаусом Виртом из Швейцарии, как один из первых элементарных языков программирования для людей, а не для учёных высшей математики, которые понимают в Ассемблере. Delphi же был разработан компанией Borland в 1986 году. Как пишет Википедия, "При создании языка (и здесь качественное отличие от языка C) не ставилось задачи обеспечить максимальную производительность исполняемого кода или лаконичность исходного кода для экономии оперативной памяти. Изначально язык ставил во главу угла стройность и высокую читаемость, поскольку был предназначен для обучения дисциплине программирования. Эта изначальная стройность в дальнейшем, как по мере роста аппаратных мощностей, так и в результате появления новых парадигм, упростила расширение языка новыми конструкциями." Если перевести на русский, то, как говорил во вступлении, в языке синтаксис очень лёгкий. Человек, открывая код и мало понимая языки программирования, может очень легко в этом коде разобраться и научиться его писать. Если он НЕ собирается писать Web проект, а какую-то программу под Windows, то Delphi будет вполне достаточно и как не обсирали Хауди Хо и другие Паскаль как таковой, он достаточно привлекателен, если во главу идеи программирования лежит разработка для себя и других, хобби, а не деньги. К примеру,
program <название программы>;
var переменная: тип;
begin
оператор 1;
оператор 2;
оператор 3;
.....
end.
Давайте теперь посмотрим на Delphi, а если быть точнее, Delphi 7.
Delphi 7 и все его прелести
Встречает нас программа вот так. Не сразу понимаешь, что и как, но немного найдя в интернете инфы, можно немного врубиться. Давайте создадим программу на нём.
Для начала - текст.
Создаётся текст при нажатии кнопки А в верхней панели, а изменяется при помощи настройки "Caption" в боковом меню.
При открытии вкладки "Font" можно изменить стиль шрифта и его размер.
Кстати, заголовок программы при выделении формы тоже через настройку Caption можно изменить. Теперь давайте сделаем простой калькулятор с плюсом, минусом, умножением и делением. Для начала нужно добавить кнопки.
Проверяем работоспособность при помощи кнопки F9 или зелёным треугольником в верхней панели.
Во, другое дело! Теперь надо написать код всего этого. Для начала - прощёлкиваем все кнопки для появления кода. Дальше нажимаем в коде TForm1 и начинаем. Для начала нужно всем числовыем кнопкам прикрепить функцию нажатия. Для этого в коде первой кнопки нужно написать Edit1.Text:=Edit1.Text+'1';. Да, даже точка с запятой важны. Этот код мы вставляем во все числовые кнопки, меняя числа теми, которые нужны.
Далее активируем кнопку Clear. Для этого в коде кнопки пишем Edit1.Clear();. Теперь вы начинаете понимать, насколько Паскаль прост. Немного сложнее дела обстоят с кнопками умножения, деления, плюсом и минусом. Для этого нужно некоторое логическое пояснение: число, набранное в поле, нужно же где-то сохранять. И нужно сохранить действие кнопки, на которую нажали. И нужно после этого стереть поле. А после набирания второго числа и нажатия на знак '=' надо сохранить число, определить действие и, отталкиваясь от этого, считать и выводить ответ. Итак, а теперь давайте эту несуразицу переводить в код. Во-первых, переменные чисел. Их нужно объявлять до основного кода.
var x,y,z: Real;
clear: char;
Из общепринятных практик Delphi:
Для названий объектов используют префиксы и короткое слово, характеризующее его назначение, К примеру, главная форма обычно называется "frmMain" (от слов frm - Frame, Main - главный). Для названий переменных используется тот же приём.
А теперь две загадки от Жака Фреско: почему не Integer? Почему для деления используется clear, а не какое-то адекватное значение? На ответ даётся 30 секунд. А ответ следующий: real тут к тому, потому что в этом случае будет в стену упираться деление, которому нужна плавающая точка, и не запустит код. А почему clear? Ну... Потому что у меня "прекрасная и большая" фантазия. Вот так.
Далее - первое действие.
procedure TForm1.Button1Click(Sender: TObject);
begin
x:=StrToInt(Edit1.Text);
clear:='+';
Edit1.Clear();
end;
...
Из общепринятных практик Delphi:
В Delphi присутствует конструкция "with <Идентификатор> do".Она используется в тех случаях, когда мы несколько раз обращаемся к одному и тому же объекту. К примеру: Edit1.Text := Edit1.Text + 'строка';. Здесь мы два раза обращаемся к одному и тому же Edit1. Поэтому целесообразно сделать вот так:
with Edit1 do
Text := Text + 'строка';
Во-первых, введёное число здесь текст, а не число, потому надо преобразовать это значение, потому и используется команда StrToInt. Далее, в переменной clear сохраняется действие. Последнее - очистка поля после нажатия. Надеюсь, не нужно объяснять. Так мы делаем во всех кнопках, меняя значение clear. Следующее - второе число и =.
Код следующий:
procedure TForm1.Button2Click(Sender: TObject);
begin
y:=StrToInt(Edit1.Text);
case clear of
'+': z:=x+y;
'-': z:=x-y;
'*': z:=x*y;
'/': z:=x/y;
end;
Edit1.Text:=FloatToStr(z)
end;
Для объяснения этого новичкам я процитирую отрывок из настолькой книги "Объектно-ориентированное программирование", где почти на 430 страницах разжовывается, как использовать Делфи:
"Оператор ветвления case является удобной альтернативой оператору if, если необходимо сделать выбор из конечного числа имеющихся вариантов. Он состоит из выражения, называемого переключателем, и альтернативных операторов, каждому из которых предшествует свой список допустимых значений переключателя.
Оператор case вычисляет значение переключателя (который может быть задан выражением), затем последовательно просматривает списки его допустимых значений в поисках вычисленного значения и, если это значение найдено, выполняет соответствующий ему оператор. Если переключатель не попадает ни в один из списков, выполняется оператор, стоящий за словом else. Если часть else отсутствует, управление передается следующему за словом end оператору."
Если переводить на русский, то если операторов при одном условии несколько, то удобнее писать в операторе case, а не писать каждый раз
if ... then ... else
if ... then ... else
if ... then ... else и т.д., верно ведь?
Возвращемся к нашему коду: в операторе case условием является переменная clear, т.е. если пользователь нажал какую-то кнопку, она запоминается в переменной clear, а потом оператор case вычитывает это значение и проверяет в своём теле это. И если действие совпадает с тем, что прописано в теле, то выполняется действие. Потом, после расчёта, полученная переменная z, в которой записан ответ, переводится из цифры с плавающей точкой в текст, и он выводится в строку. Не эстетичный ли код получаетя ли, правда?
В этом и вся прелесть Delphi. Именно из-за него и начали образовываться такие проекты, как Total Commander, AIMP, FL Studio, проприетарный KM Player, SublimeText, любимый многими своей простотой и красочностью, Skype до покупки Microsoft, в конце концов то! И я рискну заявить, что ВЫ можете перейти на другой язык, обучившись основными навыками в Паскале и Delphi! Чего эта программа стоит то!
Спасибо за просмотр!