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

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

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

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

Сообщение Mikhail » 16.11.2013 12:44:11

Лекс Айрин писал(а):Mikhail, после end


Это тоже разделитель. Хотя после "end" его можно убрать или сделать необязательным.
Mikhail
энтузиаст
 
Сообщения: 565
Зарегистрирован: 24.10.2013 16:06:47

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

Сообщение Лекс Айрин » 16.11.2013 13:19:33

Mikhail, не суть важно как он называется... просто ситуации когда ";" ставится, а когда не ставится только путают.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

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

Сообщение alexey38 » 16.11.2013 14:17:35

Лекс Айрин писал(а):Mikhail, не суть важно как он называется... просто ситуации когда ";" ставится, а когда не ставится только путают.

Наличие или отсутствие ";" после end, после ")" в описании процедуры на мой взгляд ни на что не влияет. Соответственно применение ";" можно сделать не обязательным, хочешь ставь, а хочешь не ставь. Использование ";" при перечислении параметров и типов при описании процедуры - это хорошее и ясное применение, как есть в паскале, так лучше всего.

Добавлено спустя 11 минут 4 секунды:
По циклам я бы предложил следующие варианты:
For 100 do // счетчик цикла недоступен, цикл повторится 100 раз
For count:100 do // count - счетчик цикла (от 0 до 99), в секции var переменную count можно определять, а можно и не определять (тогда она имеет тип int32)
For count:[50..100] do // count - счетчик цикла (от 50 до 100), квадратные скобки для привлечения внимания, что это диапазон, а не количество раз, как в предыдущем случае (от 0 до 99)
for count:expression do // expression - количество повторов цикла (от 0 до expression-1), вычисляется однократно перед первым входом в цикл, если нужно каждый раз, то используй while
For count:[expression_min..expression_max] do // выражения expression_min и expression_max, вычисляется однократно перед первым входом в цикл, если нужно каждый раз, то используй while

Добавлено спустя 3 минуты 57 секунд:
Лекс Айрин писал(а):Лекс Айрин писал(а):
гемор полный... все же паскалевский вариант очевиднее. Тем более, что вариант когда мне нужен, к примеру, диапазон от 8 до 74, никто не отменял.

Mikhail писал(а):А когда он нужен?

Нужен в матричной (или иной) математике, когда имея вложенные циклы начальная граница определяется индексом вышестоящего цикла
Код: Выделить всё
for x:=0 to Matr.Width-1 do
  for y:=x+1 to Matr.Height-1 do
  begin
    Matr[x,y] ...
Последний раз редактировалось alexey38 17.11.2013 11:42:48, всего редактировалось 1 раз.
alexey38
долгожитель
 
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31

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

Сообщение Лекс Айрин » 16.11.2013 14:49:28

alexey38, да мне, лично, только после end непонятно зачем нужно. Уже попадал в ситуацию, когда компилятор не мог выбрать ставить или нет точку с запятой перед else.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

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

Сообщение debi12345 » 16.11.2013 14:53:27

Я набрался смелости и предложил давно "метчаемую" идею
There's also possible C-syntax (with curly braces and combo operators) :
--------------------
finction finc1(var1: integer): boolean {
locvar1: integer
locvar1:= 2; locvar1*=3
if 2 <> var1 {
result:= true
} else {
result:= false
}
}

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

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

Сообщение Лекс Айрин » 16.11.2013 15:09:29

debi12345, фигурные скобки это как бы комментарии. В паскалеподобном языке они будут вызывать когнитивный диссонанс.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

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

Сообщение debi12345 » 16.11.2013 16:34:39

В паскалеподобном языке они будут вызывать когнитивный диссонанс.

Это не MSEPas, а MSElang. То есть есть нужно что-то толковое сделать - свобода действий . Комменты можно сделать в С-стиле.
Кстати, как народ смотрит на префиксный и постфиксный (ин/де)кременты :
Код: Выделить всё
var1++, (++var)^

? Лично я - очень положительно :)
И на float-тип в цикловых переменных, еснно с явным заданием шага ?

Добавлено спустя 6 минут 55 секунд:
Кстати лично у меня 99% комментов префиксятся "//". "{}" - только инлайновые.

Добавлено спустя 3 минуты 6 секунд:
только для разделения выражений в одной строке

Также можно для разделения имен переменных одного типа в объявлениях функций. Вот и найдено однозначное (=higher-level разделитель) применение для ";".
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

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

Сообщение Mikhail » 16.11.2013 18:11:34

debi12345 писал(а):Я набрался смелости и предложил давно "метчаемую" идею


Какой смысл? Если хочется экзотики, то можно так, например

Код: Выделить всё
if a> 2 then
c:=2,
r:=c + sin(x),
Draw();


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

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

Сообщение alexey38 » 16.11.2013 18:32:43

debi12345 писал(а):фигурные скобки

Лично мне никогда не нравились сишные фигурные скобки, и очень нравились паскалевские begin/end с момента появления подсвечиваемого кода в редакторе. Для меня выделенные цветом begin/end визуально выделяет кусок кода в некий логический блок. Фигурные скобки слишком тонки, и их подсветка для меня незаметна, и поэтому я не ощущаю их визуального эффекта. Я бы даже оставил возможность ставить begin (как необязательное слово), сугубо для выделения. Писать begin/end уже много лет не является проблемой с момента того, как редакторы научились завершать эти конструкции, и начинать с полуслова.
debi12345 писал(а):Комменты можно сделать в С-стиле.

Я лично пользуюсь // для комментариев. Скобки {} (* *) /* */ - это для временного комментирования либо большого куска кода, либо внутри строки. Что в отличие от // показывает, что коммент заведомо временный.
debi12345 писал(а):только для разделения выражений в одной строке

Иногда приходится писать длинные операторы, которые разбиваешь на несколько строк. Не часто но бывает. Во-первых, для понимания смысла иногда имена переменных, классов и т.п. пишешь длинным идентификатором (когда смысл сложный и встречается редко). Иногда при объявлении функции, каждый параметр пишу с отдельной строки, чтобы вместить комментарий. Соответственно неудобно, если бы перевод строки считался аналогом ";".
debi12345 писал(а):И на float-тип в цикловых переменных, еснно с явным заданием шага ?

Зачем? Чем плохо счетчик цикла умножить на коэффициент для перевода в float-тип? Зачем операторы подстраивать под частные задачи?
debi12345 писал(а):var1++, (++var)^

(++var)^ - за такое желательно вводить расстрел на месте. Для низкоуровневого программирования это приемлемо, но при работе так со строками и массивами - только расстрел без права амнистии. Я на работе таких сразу увольняю.
var1++ - чем хороша эта конструкция? И чем плох традиционный inc(var1) ? Ну на пару символов длиннее и что ? За использование (var1++) внутри выражения - расстрел на месте (увольнение). Крючкообразный сишный синтаксис у меня никогда не вызывал восторга, эстетически он неряшлив и корявый.

При том, что для любителей сишного синтаксиса есть и сам С++, и есть С#, есть Ява и ряд других языков. Выдумывать еще такой же бессмысленно.

Добавлено спустя 2 минуты 35 секунд:
Mikhail писал(а):Если хочется экзотики, то можно так, например

А зачем? Значение символов ";" и "," в русском языке достаточно точно соответствует их смыслу в паскале.
alexey38
долгожитель
 
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31

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

Сообщение debi12345 » 16.11.2013 18:51:16

Я бы даже оставил возможность ставить begin (как необязательное слово), сугубо для выделения. Писать begin/end уже много лет не является проблемой с момента того, как редакторы научились завершать эти конструкции, и начинать с полуслова
Ну это в Лазурусе и навороченных текстовиках. В MSEide-то этого (автонаписание, выделение цветом) нет, и BEGIN+END реально замусоривают (делают плохочитаемым) код.

Для низкоуровневого программирования это приемлемо, но при работе так со строками и массивами - только расстрел без права амнистии. Я на работе таких сразу увольняю.

В С++ эти операторы переопредляются под конкрентный тип, если надо.

var1++ - чем хороша эта конструкция?

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

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

Сообщение Mikhail » 16.11.2013 18:57:08

debi12345 писал(а):В С++ эти операторы переопредляются под конкрентный тип, если надо.


Зло. :evil:

debi12345 писал(а):Тем что инлайновая и встраивается как L-value в выражения.


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

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

Сообщение debi12345 » 16.11.2013 19:55:54

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

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

Сообщение Mirage » 16.11.2013 20:26:36

debi12345 писал(а):Кстати, как народ смотрит на префиксный и постфиксный (ин/де)кременты :
Код: Выделить всё
var1++, (++var)^


Да вообще все должно быть префиксным (либо, как вариант, постфиксным):
вместо
b := a + 1
пишем
:= + b a 1

А если серьезно, все давно придумано. И вместо того, чтобы выдумывать что-то своё, лучше посмотреть что уже есть придуманного.
Например, в D много всего понапихали. Лисп еще не весь растащили. И т.д.
Мало знать, надо еще проанализировать что работает, а что нет.
Хотя я понимаю, что в данном случае такого подхода ожидать не стоит.
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

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

Сообщение Mikhail » 16.11.2013 21:22:42

debi12345 писал(а):Могло бы быть злом если безальтернативно принуждалось к использованию. А так имеем фишки для ценителей :)


Фишки для ценителей - тоже зло. :D Нельзя строить язык как набор "фишек". Ниже правильно написано.
Mikhail
энтузиаст
 
Сообщения: 565
Зарегистрирован: 24.10.2013 16:06:47

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

Сообщение debi12345 » 16.11.2013 22:06:27

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

Почему ? Типичный современный xUSSR-программер знает глубоко и/или необходимый минимум как правило С, С++, Assembler, Pascal, PHP/Java, TCL или Python (Lisp-подобные). Многие имели дело с AutoLISP-ом в Автокаде. То есть мы, здесь сидящие - уже немало проанализировавшие что работает, что используется, а что почти нет :)

Добавлено спустя 7 минут 11 секунд:
Соответственно неудобно, если бы перевод строки считался аналогом ";".

Тут да - не обойтись без соединителя строк исходного кода вроде С-го или BASH-го символа "".

Добавлено спустя 2 минуты 30 секунд:
Фигурные скобки слишком тонки, и их подсветка для меня незаметна в ширину, и поэтому я не ощущаю их визуального эффекта

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

Пред.След.

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

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

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

Рейтинг@Mail.ru