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

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

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

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

Сообщение Иван Шихалев » 27.11.2013 17:16:22

Вообще говоря, если есть доступ по SSH, то git-сервер, можно сказать, уже поднят :)
А exit в FPC поддерживает вызов с параметром.
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1140
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

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

Сообщение alexey38 » 27.11.2013 17:34:18

Mikhail писал(а):Тело циклов иногда занимало несколько сот строк и догадаться что это бесконечный цикл можно было только пролистав до конца. Почему разработчики не написали эквивалентный, но более понятный

Я за такое увольняю сразу.

Во-первых, тело цикла не должно превышать МАКСИМУМ нескольких десятков строк. Оптимально до 10-15 строк, а еще лучше - 5 строк.
Во-вторых, бесконечный цикл - это уже ущерб логики и методологии программирования.

Поэтому проблема надуманная. Решается прекрасно административным путем. Если тело цикла больше 50 строк, то выписывайте штраф в размере 10 баксов за каждую лишнюю строку кода. Одного штрафа в штуку баксов уже достаточно, чтобы программист больше никогда в жизни не писал такой корявый код.
Mikhail писал(а):Циклы (структурные) while, repeat, for остаются, но запрещается их досрочное завершение. Одна точка входа и одна точка выхода.

В чем смысл такого требования? Цикл и его красота что ли самоцель алгоритма?
Mikhail писал(а):Дополнительно, вводится (неструктурный) цикл "loop end". Выход из цикла осуществляется с помощью операторов break. Это цикл общего вида, позволяющий реализовать такие конструкции как "цикл с выходом из середины", "цикл с несколькими выходами" и т.п.

У Вас какое-то странное мышление. У Вас ЦИКЛ является какой-то самоцелью, что Вы характеризуете цикл (сколько выходов из него и где они), а не саму задачу. Есть задача, а цикл - это инструмент ее решения. Зачем тратить время на классификацию циклов и прочих абстрактных понятий?
Mikhail писал(а):Сейчас, если нужен цикл с несколькими выходами, я пишу так

А зачем Вы пишите так? Первая же строка "while true do" уже вводит в заблуждение (якобы говорит о бесконечности цикла) и не несет никакой информации. Хотя это обман (а за обман бьют по рукам), т.к. цикл конечен, но Вы основное условие выкинули куда-то в середину тела, создав при этом кучу непоняток.
Выходы из цикла характеризуют не сам цикл (цикл не нужно характеризовать, он вторичен), они характеризуют решаемую задачу.

Хороший программный код должен ясно и лаконично описывать алгоритм, как хорошая книга. Нет нужды отвлекать внимание на всякую ерунду, как описание количества точек выхода из цикла.
alexey38
долгожитель
 
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31

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

Сообщение debi12345 » 27.11.2013 17:45:52

Так вот, перескоки через уровни - они вводят в ступор. Приходится притормаживаться и разбираться куда конкретно перепрыгиваем, и почему мы перепрыгиваем.

и здесь "GOTO <meaningful_label>;" - палочка-выручалочка :) Именно поэтому Мартин это подход так упорно отстаивает.

Добавлено спустя 10 минут 18 секунд:
[MSEide-MSEgui-talk] [off] Möbius: Pascal without begin/end ?

Зондирование общественного мнения :
http://www.delphitools.info/2013/11/26/mobius-pascal-without-beginend/

Добавлено спустя 7 минут 30 секунд:
Вообще говоря, если есть доступ по SSH, то git-сервер, можно сказать, уже поднят

Бинарники сервака все равно нужен - а они тянет кучу завимостей, начиная с Python... Что для рутера - не комильфо.
SSH в Вашем примере - пример работы с SSH-ключами и прицепление ридонли-Веб-обертки (как GitHub), это нужно для авторизации с правами записи в репозиторий (в GIT-е возможно только для GIT и SSH-протоколов, АФАЙК)

Добавлено спустя 6 минут 38 секунд:
Вы похоже сами выдумали себе мазохистские проблемы, которые затем героически решаете.

Ну не знаю... По мне проще всего зайти рутом в SSH-консоль (можно без пароля - если через "authorized_keys"), открыть МСEDIT, отредактировать, собрать, запустить (можно в другой консоли -чтобы не закрывать редактор). Какие проблемы ? То,что MCEDIT не прячет нафиг ненужные BEGIN ?
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5211
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

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

Сообщение Иван Шихалев » 27.11.2013 18:16:11

Git прекрасно собирается с минимумом зависимостей — openssl и zlib. Ну а сервер от клиента у него не отличается. SSH да, обеспечивает доступ. Что до веб-обертки — вот она действительно в большинстве случаев не нужна — это уже не для работы а для «публикации».
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1140
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

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

Сообщение debi12345 » 27.11.2013 18:19:51

Не только нас допек старый синтаксис :
making Pascal less verbose is an excellent idea and deserves admirations. I vote for getting rid of begin/end or at least renaming to something less obtrusive. The begin/end hell is the reason I adore all those breaking the normal codeflow keywords like: exit, break, continue. They save me from the visual garbage.

:))

Git прекрасно собирается с минимумом зависимостей — openssl и zlib.

Ага, а Python?
Я - дебианщик. Понятие собирать = собирать только инсталлируемый пакет, ессно на машине с большим хардом, где установлены по максимуму девелоперские пакеты (ессно это не рутер) :) Кстати, исходники OPENSLL - не малыши. Забивать ими "/usr/src/" на рутере - тоже не комильфо.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5211
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

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

Сообщение Иван Шихалев » 27.11.2013 18:39:09

http://packages.debian.org/wheezy/git — где здесь python в зависимостях?
И в чем проблема собрать на машине с большим хардом, а потом установить?
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1140
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

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

Сообщение alexey38 » 27.11.2013 18:43:20

debi12345 писал(а):и здесь "GOTO <meaningful_label>;" - палочка-выручалочка Именно поэтому Мартин это подход так упорно отстаивает.

Да не нужна такая палка-копалка, т.к. она ухудшает читабельность кода. Алгоритм нужно просто переделывать, тогда и возникнет потребность. А там, где нужна, там существует EXIT. То есть вместо дурацких меток, обычный паскаль Вас заставит структурировать код.
debi12345 писал(а):Ну не знаю... По мне проще всего зайти рутом в SSH-консоль (можно без пароля - если через "authorized_keys"), открыть МСEDIT, отредактировать, собрать, запустить (можно в другой консоли -чтобы не закрывать редактор). Какие проблемы ? То,что MCEDIT не прячет нафиг ненужные BEGIN ?

А более правильно: зайти рутом в SSH-консоль (можно без пароля - если через "authorized_keys"), сделать svn up (git pull), собрать, запустить. Еще проще, быстрее. Куча преимуществ, и нет извращений.
debi12345 писал(а):Не только нас допек старый синтаксис :

Вас допек синтаксис только потому, что Вас не научили хорошо работать (на благо заказчика и себе не в обиду).

Добавлено спустя 2 минуты 49 секунд:
debi12345 писал(а):Забивать ими "/usr/src/" на рутере - тоже не комильфо.

А зачем Вы собираете на роутере? Или Вы внедряете Ваши проекты именно на роутере? Вы пишите софт для роутеров? Причем пишите его в реальном времени в процессе работы роутера (и Вас админы не выгоняют)?
alexey38
долгожитель
 
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31

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

Сообщение mse » 27.11.2013 18:48:07

Mikhail писал(а):You misunderstood.

Cycles (structural) while, repeat, for remain, but prohibited them early completion. One entry point and one exit point.

Additionally, introduced (non-structural) cycle "loop end". The cycle with the help of operators break. It is a cycle of general form, allowing to realize such designs as "cycle with the release of the mid", "cycle with multiple outputs", etc.

Thanks, I'll think about. I several times had problems with overlooked 'exit' statements but up to now not with 'break' or 'continue', probably because one expects them in loop statements.
mse
новенький
 
Сообщения: 68
Зарегистрирован: 08.08.2013 15:40:31

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

Сообщение alexey38 » 27.11.2013 18:53:13

mse писал(а):Readable. MSElang programs should read like a letter.

Вот это очень хороший и правильный тезис.

Поэтому в реальных программах не должно быть оператора GOTO, т.к. этот оператор заставляет отвлекаться от линейного чтения программы "как письма". Программу нужно читать последовательно, и от последовательного чтения должно быть уже почти все понятно.

Добавлено спустя 5 минут 26 секунд:
mse писал(а):MSElang is optimized for people like me who are hindered in productivity by all the colors, lines, shades and whatnot modern IDEs provide. That the productivity of "letter-like-coding-style" is not so bad one probably can see by the MEide+MSEgui project, a single person makes a whole production ready cross platform GUI development environment including IDE, designer and accompanying tools.

RAD нужен не для чтения программ. RAD нужен для быстрого и безошибочного рефакторинга. Например, Вам достался наследованный (написанный не Вами) код, в котором есть вложенные циклы, причем тело некоторых циклов превышает сотню строк. И у Вас есть всего 5-20 минут времени, и Вам через 5-20 минут нужно выдать уже переделанный код, без ошибок и с новой функциональностью.
alexey38
долгожитель
 
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31

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

Сообщение debi12345 » 27.11.2013 19:03:07

А зачем Вы собираете на роутере? Или Вы внедряете Ваши проекты именно на роутере?

Утиллитки (несчетное количество , в основном на BASH+SED+AWK), веб-роботы... На FPC+SYNAPSE "роботов" и прочие "сетевизмы" писать проще всего.

Вы пишите софт1 для роутеров? Причем пишите его в реальном времени в процессе работы роутера (и Вас админы не выгоняют)?

У нас (200+ сетевых иснталляций и 4 сети) админ - сокращенная должность. Я ее замещаю - за 25% надбавку :) Так что "выгнать" может только собственная совесть :)
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5211
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

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

Сообщение Mikhail » 27.11.2013 19:21:20

debi12345 писал(а):Нифига не ясно.


Если знаком с грамматикой языка, то ясно.

debi12345 писал(а):Исключительно для обслуживания процедур (RETUEN без значения) ? Тогда точно в топку :)


В FPC поддерживается Exit(выражение), полная калька с return.

Кроме того, код
Код: Выделить всё
Result:=...;
Exit;

это тоже полный аналог return.
Mikhail
энтузиаст
 
Сообщения: 534
Зарегистрирован: 24.10.2013 16:06:47

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

Сообщение alexey38 » 27.11.2013 19:42:22

debi12345 писал(а):У нас (200+ сетевых иснталляций и 4 сети) админ - сокращенная должность. Я ее замещаю - за 25% надбавку Так что "выгнать" может только собственная совесть

Роутеры - это же действующее оборудование? А если Вы чего-то накосячите, то у Вас простои считаются нормой? Или пока утилита в переделке, то как без нее? Или она не особо-то кому и нужна?

Я много работаю на действующих объектах. Но обычно косяки и простои вообще недопустимы. А если порушишь сеть, хотя бы на 1 минуту по своей вине, то считай, что с тобой разорвали контракт и занесли в черный список. Поэтому у нас очень осторожно построена работа на действующем оборудовании. Мы туда ставим уже отлаженные и настроенные решения.
alexey38
долгожитель
 
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31

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

Сообщение debi12345 » 27.11.2013 19:53:54

А если Вы чего-то накосячите, то у Вас простои считаются нормой?

Большая (95%) часть сетевых соединений выдерживает даже "/etc/init.d/networking restart" - еснсо если стартовые скрипты написаны правильно :) Типичные рабочие коннекты (SSH и VPN) переживают без проблем - не рвутся, а как бы притормаживаются. То есть правлю и и нагло рестартую прямо во время работы :)

Добавлено спустя 8 минут 37 секунд:
Здесь важнейшее :
еснсо если стартовые скрипты написаны правильно

Этого (чтобы можно было безопасно вносить изменения) долго добивался - даже своего рода рутерный макроязык написать пришлось :)

Добавлено спустя 3 минуты 36 секунд:
хотя бы на 1 минуту по своей вине, то считай, что с тобой разорвали контракт и занесли в черный список.

Нужно обставлять работы так, чтобы нечаянно созданные сетевые проблемы легко можно было списать на "глюк оборудования" и "упал канал" %)

Добавлено спустя 6 минут 8 секунд:
И в чем проблема собрать на машине с большим хардом, а потом установить?

GIT-сервак на рутере ? Рука не поднимается :) И место, и лишний листенер (потенциальная уязвимость). И он реально "питона" (тоже место) хочет.
Поэтому GIT-сервак стоит на другой (WWW-сервере) машине.

Добавлено спустя 8 минут 27 секунд:
И он реально "питона"

Фу, sorry- это его "админка" (GITOSIS) хочет, она тоже ставится на сервак. Но я без нее GIT-админить не люблю :)

Добавлено спустя 54 минуты 26 секунд:
Камень в огород Модулы/Оберона :
@Modula-2 fans: Whether young Nikolas or old Nikolas was more clever is still an open question

?
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5211
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

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

Сообщение Mikhail » 27.11.2013 21:37:26

debi12345 писал(а):Камень в огород Модулы/Оберона :


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

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

Сообщение Иван Шихалев » 27.11.2013 22:45:02

debi12345 писал(а):и лишний листенер

Т.е. доступа по ssh туда нет? Никакого другого листенера нет и не нужно. Git-daemon поднимается, только если нужен публичный неавторизованный доступ.
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1140
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Пред.След.

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

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

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

Рейтинг@Mail.ru