Разработка когнитивно-эргономического синтаксиса для нового аппаратно-ориентированного языка программирования

alextretyak

Administrator
Staff member
Эта тема форума предназначена для обсуждения данной статьи.
Авторская версия статьи прикреплена к этому сообщению.
 

Attachments

Last edited:

alextretyak

Administrator
Staff member
Например, такой код на C++:
C++:
while (true) {
    switch (instr[i]) {
    case '[':
        nesting_level++;
        break;
    case ']':
        if (--nesting_level == 0)
            goto break_;
        break;
    }
    i++;
    ...
}
break_:
может быть записан более коротко/лаконично на Python:
Python:
while True:
    if instr[i] == "[":
        nesting_level += 1
    elif instr[i] == "]":
        nesting_level -= 1
        if nesting_level == 0:
            break
    i += 1
Неудачный пример.
Код на C++ можно ведь [было] написать в стиле кода на Python:
C++:
while (true) {
    if (instr[i] == '[')
        nesting_level++;
    else if (instr[i] == ']')
        if (--nesting_level == 0)
            break;
    i++;
    ...
}
 

alextretyak

Administrator
Staff member
Цитата из статьи:
Как бы не старались разработчики языков программирования уйти от циклов к функциональному «for each» (запись times и each в Ruby и Groovy, а также foreach/forEach в Scala/Kotlin)
Имеется в виду код в функциональном стиле.
Например такой:
Ruby:
(1..10).each {|i| puts "#{i}\t в квадрате = #{i**2}"}
(Взято отсюда, там же чуть выше пример с обычным for.)

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