А exit в FPC поддерживает вызов с параметром.
MSElang : обсуждение фишек
Модератор: Модераторы
- Иван Шихалев
- энтузиаст
- Сообщения: 1138
- Зарегистрирован: 15.05.2006 11:26:13
- Откуда: Екатеринбург
- Контактная информация:
Вообще говоря, если есть доступ по SSH, то git-сервер, можно сказать, уже поднят 
А exit в FPC поддерживает вызов с параметром.
А exit в FPC поддерживает вызов с параметром.
Mikhail писал(а):Тело циклов иногда занимало несколько сот строк и догадаться что это бесконечный цикл можно было только пролистав до конца. Почему разработчики не написали эквивалентный, но более понятный
Я за такое увольняю сразу.
Во-первых, тело цикла не должно превышать МАКСИМУМ нескольких десятков строк. Оптимально до 10-15 строк, а еще лучше - 5 строк.
Во-вторых, бесконечный цикл - это уже ущерб логики и методологии программирования.
Поэтому проблема надуманная. Решается прекрасно административным путем. Если тело цикла больше 50 строк, то выписывайте штраф в размере 10 баксов за каждую лишнюю строку кода. Одного штрафа в штуку баксов уже достаточно, чтобы программист больше никогда в жизни не писал такой корявый код.
Mikhail писал(а):Циклы (структурные) while, repeat, for остаются, но запрещается их досрочное завершение. Одна точка входа и одна точка выхода.
В чем смысл такого требования? Цикл и его красота что ли самоцель алгоритма?
Mikhail писал(а):Дополнительно, вводится (неструктурный) цикл "loop end". Выход из цикла осуществляется с помощью операторов break. Это цикл общего вида, позволяющий реализовать такие конструкции как "цикл с выходом из середины", "цикл с несколькими выходами" и т.п.
У Вас какое-то странное мышление. У Вас ЦИКЛ является какой-то самоцелью, что Вы характеризуете цикл (сколько выходов из него и где они), а не саму задачу. Есть задача, а цикл - это инструмент ее решения. Зачем тратить время на классификацию циклов и прочих абстрактных понятий?
Mikhail писал(а):Сейчас, если нужен цикл с несколькими выходами, я пишу так
А зачем Вы пишите так? Первая же строка "while true do" уже вводит в заблуждение (якобы говорит о бесконечности цикла) и не несет никакой информации. Хотя это обман (а за обман бьют по рукам), т.к. цикл конечен, но Вы основное условие выкинули куда-то в середину тела, создав при этом кучу непоняток.
Выходы из цикла характеризуют не сам цикл (цикл не нужно характеризовать, он вторичен), они характеризуют решаемую задачу.
Хороший программный код должен ясно и лаконично описывать алгоритм, как хорошая книга. Нет нужды отвлекать внимание на всякую ерунду, как описание количества точек выхода из цикла.
- debi12345
- долгожитель
- Сообщения: 5761
- Зарегистрирован: 10.05.2006 23:41:15
- Откуда: Ташкент (Узбекистан)
Так вот, перескоки через уровни - они вводят в ступор. Приходится притормаживаться и разбираться куда конкретно перепрыгиваем, и почему мы перепрыгиваем.
и здесь "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 ?
- Иван Шихалев
- энтузиаст
- Сообщения: 1138
- Зарегистрирован: 15.05.2006 11:26:13
- Откуда: Екатеринбург
- Контактная информация:
Git прекрасно собирается с минимумом зависимостей — openssl и zlib. Ну а сервер от клиента у него не отличается. SSH да, обеспечивает доступ. Что до веб-обертки — вот она действительно в большинстве случаев не нужна — это уже не для работы а для «публикации».
- debi12345
- долгожитель
- Сообщения: 5761
- Зарегистрирован: 10.05.2006 23:41:15
- Откуда: Ташкент (Узбекистан)
Не только нас допек старый синтаксис :
)
Ага, а Python?
Я - дебианщик. Понятие собирать = собирать только инсталлируемый пакет, ессно на машине с большим хардом, где установлены по максимуму девелоперские пакеты (ессно это не рутер)
Кстати, исходники OPENSLL - не малыши. Забивать ими "/usr/src/" на рутере - тоже не комильфо.
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?
Я - дебианщик. Понятие собирать = собирать только инсталлируемый пакет, ессно на машине с большим хардом, где установлены по максимуму девелоперские пакеты (ессно это не рутер)
- Иван Шихалев
- энтузиаст
- Сообщения: 1138
- Зарегистрирован: 15.05.2006 11:26:13
- Откуда: Екатеринбург
- Контактная информация:
http://packages.debian.org/wheezy/git — где здесь python в зависимостях?
И в чем проблема собрать на машине с большим хардом, а потом установить?
И в чем проблема собрать на машине с большим хардом, а потом установить?
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/" на рутере - тоже не комильфо.
А зачем Вы собираете на роутере? Или Вы внедряете Ваши проекты именно на роутере? Вы пишите софт для роутеров? Причем пишите его в реальном времени в процессе работы роутера (и Вас админы не выгоняют)?
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 писал(а):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 минут нужно выдать уже переделанный код, без ошибок и с новой функциональностью.
- debi12345
- долгожитель
- Сообщения: 5761
- Зарегистрирован: 10.05.2006 23:41:15
- Откуда: Ташкент (Узбекистан)
А зачем Вы собираете на роутере? Или Вы внедряете Ваши проекты именно на роутере?
Утиллитки (несчетное количество , в основном на BASH+SED+AWK), веб-роботы... На FPC+SYNAPSE "роботов" и прочие "сетевизмы" писать проще всего.
Вы пишите софт1 для роутеров? Причем пишите его в реальном времени в процессе работы роутера (и Вас админы не выгоняют)?
У нас (200+ сетевых иснталляций и 4 сети) админ - сокращенная должность. Я ее замещаю - за 25% надбавку
debi12345 писал(а):Нифига не ясно.
Если знаком с грамматикой языка, то ясно.
debi12345 писал(а):Исключительно для обслуживания процедур (RETUEN без значения) ? Тогда точно в топку
В FPC поддерживается Exit(выражение), полная калька с return.
Кроме того, код
Код: Выделить всё
Result:=...;
Exit;
это тоже полный аналог return.
debi12345 писал(а):У нас (200+ сетевых иснталляций и 4 сети) админ - сокращенная должность. Я ее замещаю - за 25% надбавку Так что "выгнать" может только собственная совесть
Роутеры - это же действующее оборудование? А если Вы чего-то накосячите, то у Вас простои считаются нормой? Или пока утилита в переделке, то как без нее? Или она не особо-то кому и нужна?
Я много работаю на действующих объектах. Но обычно косяки и простои вообще недопустимы. А если порушишь сеть, хотя бы на 1 минуту по своей вине, то считай, что с тобой разорвали контракт и занесли в черный список. Поэтому у нас очень осторожно построена работа на действующем оборудовании. Мы туда ставим уже отлаженные и настроенные решения.
- debi12345
- долгожитель
- Сообщения: 5761
- Зарегистрирован: 10.05.2006 23:41:15
- Откуда: Ташкент (Узбекистан)
А если Вы чего-то накосячите, то у Вас простои считаются нормой?
Большая (95%) часть сетевых соединений выдерживает даже "/etc/init.d/networking restart" - еснсо если стартовые скрипты написаны правильно
Добавлено спустя 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 писал(а):Камень в огород Модулы/Оберона :
Модула была разработана чуть позже Паскаля, Вирт тогда еще не был старым.
- Иван Шихалев
- энтузиаст
- Сообщения: 1138
- Зарегистрирован: 15.05.2006 11:26:13
- Откуда: Екатеринбург
- Контактная информация:
debi12345 писал(а):и лишний листенер
Т.е. доступа по ssh туда нет? Никакого другого листенера нет и не нужно. Git-daemon поднимается, только если нужен публичный неавторизованный доступ.
