А вот то, чем я сейчас страдаю можно в принципе писать хоть на чем.
Процедурное программирование vs Объектное
Модератор: Модераторы
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
Kemet, я прекрасно осознаю, что в ближайшие лет 10-15 у меня не хватит мастерства хоть на что-то серьезное.
А хотелось бы написать ось пятого поколения. Я знаю, что это мания величия... но мечтать-то не вредно.
А вот то, чем я сейчас страдаю можно в принципе писать хоть на чем.
А вот то, чем я сейчас страдаю можно в принципе писать хоть на чем.
В общем я так и сделал, разбил модель на мелкие функциональные блоки, вставил в них свою, уже готовую, но видоизменённую реализацию. и всё! Ну не совсем всё, тут ещё появилось куча других вещей, которые захотелось сделать на такой платформе. Надо всё это выложить уже.
Выношу на суд общественности обновлённую версию:
https://github.com/Tango600/dcl5/
https://github.com/Tango600/dcl5/
ООП не нужно. но без него паскаль не полноценнен.
добавьте возможность создавать и возвращать функции.
и паскаль возродится.
добавьте возможность создавать и возвращать функции.
Код: Выделить всё
x: = function (y:integer) begin
return function (z:integer) begin
return y * 2 + z;
end;
end;
fn := x(10);
fn(20);
и паскаль возродится.
perlpunk писал(а):добавьте возможность создавать и возвращать функции
Это синтаксический сахар. Очень удобен, когда производится прототипирование, проектирование и т.п. (когда задача|цели|методы решения|подходы ещё не формализованы), но, при отправке такого кода в продакшен, икота его автору обеспечена. Надежнее создать метод/функцию в соответствующей секции в исходнике, чем насоздавать ананонимных функций (статически, компилятор ведь). Такой функционал идеален для языка со сборщиком мусора, выполняющего байткод, там другая парадигма.
Если такая возможность появится, останется только ждать, когда юные падаваны начнут это использовать при создании гуя и обработке каскадных обновлений на форме. В общем кесареву - кесарево, интерпретатору - интерпретаторово: если нужен такой функционал - нужно использовать соответствующие решения.
perlpunk писал(а):добавьте возможность создавать и возвращать функции
В дельфях давно уже есть анонимные методы:
Код: Выделить всё
type
tfxfunc = reference to function(const z : integer) : integer;
function fx(const y : integer) : tfxfunc;
begin
exit(function(const z : integer) : Integer
begin
exit(y * 2 + z);
end;
end;
var
fn : tfxfunc;
i :integer;
begin
fn := fx(10);
i := fn(20);
writeln(i);
readln;
end.
В FPC есть т.н. блоки, суть тоже самое, но работают только на яблоках.
perlpunk писал(а):ООП не нужно. но без него паскаль не полноценнен.
добавьте возможность создавать и возвращать функции.Код: Выделить всё
x: = function (y:integer) begin
return function (z:integer) begin
return y * 2 + z;
end;
end;
fn := x(10);
fn(20);
и паскаль возродится.
ООП-е же!
Код: Выделить всё
TCalc = class(TLispLover)
y : integer;
constructor Create(ay: integer);
function invoke(z: Integer): Integer;
end;
function TCalc.invoke(z: Integer): Integer;
begin
Result:= y * 2 + z;
end;
function x(ay: Integer): TCalc;
begin
Result:=TCalc.Create;
Result.y:=ay;
end;
var
fn : TCalc;
fn := x(10);
fn.invoke(20);
кого ломает писать .free используйте object вместо class. Ну или к hinst-у за ref-count объектами!
слишком много бойлерплейта
Добавлено спустя 2 минуты 10 секунд:
ничто не мешает написать прототип по быстрому. а потом если взлетело - переписать по нормальному.
собственно так и используют питон например.
но неплохо было бы веть использовать только 1 язык паскаль для разработки если б фичи такие же присутсвовали.
Добавлено спустя 2 минуты 10 секунд:
wavebvg писал(а):Это синтаксический сахар. Очень удобен, когда производится прототипирование, проектирование и т.п. (когда задача|цели|методы решения|подходы ещё не формализованы), но, при отправке такого кода в продакшен, икота его автору обеспечена.
ничто не мешает написать прототип по быстрому. а потом если взлетело - переписать по нормальному.
собственно так и используют питон например.
но неплохо было бы веть использовать только 1 язык паскаль для разработки если б фичи такие же присутсвовали.
