Процедурное программирование vs Объектное

Проектирование и разработка идеального средства программирования.

Модератор: Модераторы

Re: Процедурное программирование vs Объектное

Сообщение Лекс Айрин » 24.07.2014 09:43:13

Kemet, я прекрасно осознаю, что в ближайшие лет 10-15 у меня не хватит мастерства хоть на что-то серьезное. :( А хотелось бы написать ось пятого поколения. Я знаю, что это мания величия... но мечтать-то не вредно.

А вот то, чем я сейчас страдаю можно в принципе писать хоть на чем.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 4231
Зарегистрирован: 19.02.2013 16:54:51

Re: Процедурное программирование vs Объектное

Сообщение Tango » 24.07.2014 09:56:23

В общем я так и сделал, разбил модель на мелкие функциональные блоки, вставил в них свою, уже готовую, но видоизменённую реализацию. и всё! Ну не совсем всё, тут ещё появилось куча других вещей, которые захотелось сделать на такой платформе. Надо всё это выложить уже.
Аватара пользователя
Tango
постоялец
 
Сообщения: 132
Зарегистрирован: 31.05.2012 17:07:30

Re: Процедурное программирование vs Объектное

Сообщение Tango » 01.08.2014 11:40:03

Выношу на суд общественности обновлённую версию:
https://github.com/Tango600/dcl5/
Аватара пользователя
Tango
постоялец
 
Сообщения: 132
Зарегистрирован: 31.05.2012 17:07:30

Re: Процедурное программирование vs Объектное

Сообщение perlpunk » 25.08.2015 09:51:54

ООП не нужно. но без него паскаль не полноценнен.

добавьте возможность создавать и возвращать функции.
Код: Выделить всё
x: = function (y:integer) begin
  return function (z:integer) begin
    return y * 2 + z;
  end;
end;

fn := x(10);
fn(20);

и паскаль возродится.
perlpunk
новенький
 
Сообщения: 84
Зарегистрирован: 26.09.2008 21:19:48

Re: Процедурное программирование vs Объектное

Сообщение wavebvg » 25.08.2015 10:23:53

perlpunk писал(а):добавьте возможность создавать и возвращать функции

Это синтаксический сахар. Очень удобен, когда производится прототипирование, проектирование и т.п. (когда задача|цели|методы решения|подходы ещё не формализованы), но, при отправке такого кода в продакшен, икота его автору обеспечена. Надежнее создать метод/функцию в соответствующей секции в исходнике, чем насоздавать ананонимных функций (статически, компилятор ведь). Такой функционал идеален для языка со сборщиком мусора, выполняющего байткод, там другая парадигма.
Если такая возможность появится, останется только ждать, когда юные падаваны начнут это использовать при создании гуя и обработке каскадных обновлений на форме. В общем кесареву - кесарево, интерпретатору - интерпретаторово: если нужен такой функционал - нужно использовать соответствующие решения.
wavebvg
постоялец
 
Сообщения: 289
Зарегистрирован: 28.02.2008 04:57:35

Re: Процедурное программирование vs Объектное

Сообщение kazalex » 25.08.2015 13:55:50

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 есть т.н. блоки, суть тоже самое, но работают только на яблоках.
kazalex
постоялец
 
Сообщения: 296
Зарегистрирован: 01.06.2012 14:54:10

Re: Процедурное программирование vs Объектное

Сообщение скалогрыз » 25.08.2015 21:42:37

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 объектами!
скалогрыз
долгожитель
 
Сообщения: 1676
Зарегистрирован: 03.09.2008 02:36:48

Re: Процедурное программирование vs Объектное

Сообщение perlpunk » 13.01.2016 20:44:28

слишком много бойлерплейта

Добавлено спустя 2 минуты 10 секунд:
wavebvg писал(а):Это синтаксический сахар. Очень удобен, когда производится прототипирование, проектирование и т.п. (когда задача|цели|методы решения|подходы ещё не формализованы), но, при отправке такого кода в продакшен, икота его автору обеспечена.


ничто не мешает написать прототип по быстрому. а потом если взлетело - переписать по нормальному.
собственно так и используют питон например.
но неплохо было бы веть использовать только 1 язык паскаль для разработки если б фичи такие же присутсвовали.
perlpunk
новенький
 
Сообщения: 84
Зарегистрирован: 26.09.2008 21:19:48

Пред.

Вернуться в Компилятор / язык программирования

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Рейтинг@Mail.ru