MSElang : обсуждение фишек

Вопросы программирования и использования MSEide + MSEgui.

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

Re: MSElang : обсуждение фишек

Сообщение alexey38 » 25.11.2013 19:42:30

Mikhail писал(а):Если серьезно, то Вирт сам признал что концепция составного оператора не совсем удачна и разработал новый синтаксис, который был реализован в Модула и Оберон.

Но к сожалению, у Вирта не получилось популяризировать свои последующие языки. Именно Паскаль, я не Модула и не Оберон стали популярными. Поэтому мы это обсуждаем на форуме freePASCAL, а не freeOBERON.
debi12345 писал(а):Я к тому, что зачем плодить неоднозначноти (необходимости что-то помнить, учитывать..) ? Выкинуть нафиг эти неоднозначности! Даже скрепя сердце и слезами на глазах

Какие еще неоднозначности? Все однозначно, т.к. существуют компиляторы паскаля, значить существует однозначность компиляции текста программы в машинный код.
Не будьте идеалистами-утопистами, т.к. цепляясь за мелочи, Вы думаете, что идете к идеалу, но на самом деле тем самым Вы оказываетесь в болоте.

Есть хорошее правило в технике, в т.ч. в технике программирования, когда все хорошо работающее не нужно переделывать, даже если кажется, что можно сделать лучше. Именно поэтому мы до сих пор используем очень много наследуемого кода, и собственно кто его умеет использовать, те и имеют профессиональный успех, а те кто самонадеянно пытаются все переписать заново, те становятся неудачниками.
Mikhail писал(а):Мартин хочет совершить куда более радикальный шаг, а именно переделать RTL!

А что в этом радикального? Вот это нормальная здравая идея.
alexey38
долгожитель
 
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31

Re: MSElang : обсуждение фишек

Сообщение debi12345 » 25.11.2013 19:51:16

С они разные.

|/& = bit, ||/&& = logical. Ну да - С тут выкрутился использованием спецсимволов - которые можно удваивать, утраивать и т.д. :) Но "AND" и "OR" не удвоишь - будет смешно. Мда..
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: MSElang : обсуждение фишек

Сообщение alexey38 » 25.11.2013 19:53:12

mse писал(а):If you write about MSElang you probably missed the point. It's not about to *remove* 'begin' from compound statements but to *add* mandatory 'end'!

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

Но когда я говорил про begin/end, то я спорил с предложениями наших коллег, предлагавших более радикальные изменения. Если компилятор будет требовать обязательный "END", то это легко исправить при попытке скомпилировать.
mse писал(а):BTW, the first things I switch off in every IDE is auto-completion and outo-what-not because it disturbs the flow of thinking, coding and typing...

А это уже как раз индивидуальные предпочтения конкретного разработчика. Кому-то нравится, кому-то нет. Мне это не мешает, и не нарушает моего мышления, т.к. я знаю, что будет auto-completion, и вызываю его осознанно в нужном месте. Просто нужно привыкнуть, что auto-completion произойдет при первом же нажатии клавиши "Enter".
alexey38
долгожитель
 
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31

Re: MSElang : обсуждение фишек

Сообщение debi12345 » 25.11.2013 19:55:04

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

Алекс - тут не переделка, а дизайн нового инструмента. Обсуждение - именно для того, чтобы потом переделывать по-минимуму :)
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: MSElang : обсуждение фишек

Сообщение alexey38 » 25.11.2013 19:58:19

Mikhail писал(а):Кстати, можно упомянуть еще об одной проблеме Turbo Pascal, а именно логические и поразрядные операторы and, or, not.

А в чем проблема? Да, операторы имеют одинаковое наименование, но в паскале логический тип несовместим с числовым, поэтому компилятор не дает возможность ошибиться. По крайней мере в моей практике такого не случалось.
А вот в С/С++ там реальная путаница, начиная от if(i=0), вместо if(i==0) или if(i&&1==0), вместо if(i&1==0). На этом многие погорали.

Добавлено спустя 8 минут 39 секунд:
debi12345 писал(а):Алекс - тут не переделка, а дизайн нового инструмента. Обсуждение - именно для того, чтобы потом переделывать по-минимуму

Тут другая проблема. Если чрезмерно увлекаться идеализмом, то гарантированно получим мертворожденный проект. А хотело бы получить живой инструмент.
Собственно пример Паскаля тому в доказательство. Вирт разработал помимо паскаля, и Модулу-2 и Обероны, и последующие языки были лучше предыдущих. НО!!! Именно на основе Паскаля, а не модулы или оберона шло активное использование.
alexey38
долгожитель
 
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31

Re: MSElang : обсуждение фишек

Сообщение Mikhail » 25.11.2013 20:58:26

debi12345 писал(а):|/& = bit, ||/&& = logical. Ну да - С тут выкрутился использованием спецсимволов - которые можно удваивать, утраивать и т.д. :) Но "AND" и "OR" не удвоишь - будет смешно. Мда..


Побитовые, вроде бы, добавили позже., поэтому так вышло.
Можно взять эти операторы из С.
Mikhail
энтузиаст
 
Сообщения: 565
Зарегистрирован: 24.10.2013 16:06:47

Re: MSElang : обсуждение фишек

Сообщение debi12345 » 25.11.2013 21:08:34

Именно на основе Паскаля, а не модулы или оберона шло активное использование.

Возможно потому что Паскаль успел занять нишу учебного языка. Ну и старт-ап программ и доступ к входным аргументам паскалевых программ не отличается от оного в С - то есть не было эффекта "выноса мозга" :)

if(i=0), вместо if(i==0) или if(i&&1==0), вместо if(i&1==0). На этом многие погорали.

Это точно :) Но иногда по этим фишкам скучаешь :)

Оберон - чемпион по неоднозначностям :
Код: Выделить всё
IF remaining = 0 THEN
  R.res := n; R.eof := TRUE; RETURN
ELSE (* min := MIN(remaining, n) *)
  IF n > remaining THEN min := remaining ELSE min := n END
END;


Код: Выделить всё
BEGIN
  instance := Kernel32.GetModuleHandle(NIL);
  OpenWindow;
  MainLoop
END MoveWindow.

??? Какая уж тут "учебность"...

Добавлено спустя 5 минут 42 секунды:
Можно взять эти операторы из С.

Или ввести модификаторы : L(ogical)AND, A(rithmetical)AND, .. :)). Это кстати поможет избежать маразмо-творения например в :
Код: Выделить всё
IF a > 2 AND 3 < b THEN ...

которая без скобок :
Код: Выделить всё
IF (a > 2) AND (3 < b) THEN ...

не компилируется.
Михаил - браво, попадание в яблочко ! То есть в ВОПИЮЩУЮ неоднозначность :)
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: MSElang : обсуждение фишек

Сообщение Mikhail » 25.11.2013 21:56:30

debi12345 писал(а):Михаил - браво, попадание в яблочко ! То есть в ВОПИЮЩУЮ неоднозначность :)


И, все-таки, контекстно зависимый оператор это зло.

Кстати, что за наезд на Оберон? :D
Mikhail
энтузиаст
 
Сообщения: 565
Зарегистрирован: 24.10.2013 16:06:47

Re: MSElang : обсуждение фишек

Сообщение debi12345 » 25.11.2013 22:22:57

Кстати, что за наезд на Оберон?

Занятная чертовщинка с символом ";".

Также не понял фишки "заставить зазубрить название подпрограммы - сперва в начале, затем в конце" :
Код: Выделить всё
  PROCEDURE MainLoop;
     VAR
        msg: User32Msg; res: LONGINT;
  BEGIN
[..]
  END MainLoop;


без оного для IF, FOR,.. :

Код: Выделить всё
FOR ...
END FOR;

IF ..
END IF;

Короче "inconsistence" (не знаю как перевести на русский).
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: MSElang : обсуждение фишек

Сообщение Mikhail » 25.11.2013 22:41:01

debi12345 писал(а):Занятная чертовщинка с символом ";".


В чем чертовщина, то?
debi12345 писал(а):Также не понял фишки "заставить зазубрить название подпрограммы - сперва в начале, затем в конце"


Да, ценность этого сомнительна. Возможно это было сделано для упрощения парсера. :?
Mikhail
энтузиаст
 
Сообщения: 565
Зарегистрирован: 24.10.2013 16:06:47

Re: MSElang : обсуждение фишек

Сообщение debi12345 » 25.11.2013 22:51:13

В чем чертовщина, то?

Еще какая, например позволят "вытягивать" "IF" в одну строку (приучая к наипорочнейшей практике) :
Код: Выделить всё
IF remaining = 0 THEN
  R.res := n; R.eof := TRUE; RETURN
ELSE (* min := MIN(remaining, n) *)
  IF n > remaining THEN min := remaining ELSE min := n END
END;

и что за фигня с RETURN-ом без ";", если конструкция многострочная ?
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: MSElang : обсуждение фишек

Сообщение Mikhail » 25.11.2013 23:20:09

debi12345 писал(а):Еще какая, например позволят "вытягивать" "IF" в одну строку (приучая к наипорочнейшей практике) :

:?:

debi12345 писал(а):что за фигня с RETURN-ом без ";", если конструкция многострочная ?

:?:
Mikhail
энтузиаст
 
Сообщения: 565
Зарегистрирован: 24.10.2013 16:06:47

Re: MSElang : обсуждение фишек

Сообщение debi12345 » 25.11.2013 23:35:06

что за фигня с RETURN-ом без ";", если конструкция многострочная ?

Код: Выделить всё
IF remaining = 0 THEN
  R.res := n; R.eof := TRUE; RETURN
ELSE

где "R.res := n; R.eof := TRUE; RETURN" - 100% 2 строки _кода_ .

Еще какая, например позволят "вытягивать" "IF" в одну строку (приучая к наипорочнейшей практике) :

Код: Выделить всё
IF n > remaining THEN min := remaining ELSE min := n END
END;

Принуждая ставить ";", подобную конструкцию нельзя было бы составить без потери читабельности.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: MSElang : обсуждение фишек

Сообщение Mikhail » 26.11.2013 00:03:58

По моему, надуманная проблема. Форматировать можно как угодно.
Mikhail
энтузиаст
 
Сообщения: 565
Зарегистрирован: 24.10.2013 16:06:47

Re: MSElang : обсуждение фишек

Сообщение debi12345 » 26.11.2013 01:11:08

Да это понятно, что любые претензии к неоднозначности - надуманы. Называется "учи нюансы и переливы, делай зарубки, закрепляй ежесекундной практикой практикой" :)
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Пред.След.

Вернуться в MSEide + MSEgui

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

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

Рейтинг@Mail.ru