Читабельность исходников

Тема в разделе "WASM.HEAP", создана пользователем SEC70R_VA, 27 ноя 2011.

  1. SEC70R_VA

    SEC70R_VA New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2011
    Сообщения:
    78
    Почему в классических языках программировании (в императивных в основном), вместо, например
    x:=10 THEN y=1 принято писать IF y=1 THEN x:=10.
    ИМХО, {...} FOR i:=[1..10] гораздо читабельней и понятней, чем FOR i:=0 TO 10 DO {...}.
    Эти префиксы отвлекают от понимания смысла программы.

    Может быть такой язык программирования уже есть?
     
  2. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    есть.
    вообще есть много языков кроме паскаля.
     
  3. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    SEC70R_VA
    "then" - это "тогда" или "в таком случае", а не "потому что".

    И в каком порядке должны следовать эти i? "to" по крайней мере подразумевает направление. Хотя, конечно, было бы правильнее что-то типа "for i from 1 to 10 step 1" или "from 1 to 10 change i", но кульхацкеры с многабукаф дристали бы шлакоблоками.
     
  4. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    SEC70R_VA
    а еще есть языки в которых не надо ПИСАТЬ БОЛЬШИМИ БУКВАМИ
     
  5. SEC70R_VA

    SEC70R_VA New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2011
    Сообщения:
    78
    GoldFinch
    приведите, пожалуйста, пример с похожим на описанный мной синтаксис.
    для сишного while (i=1;10;i++) {} тоже самое; по тексту программы приходится отслеживать всякие переменные, напрямую не связанные с "главным потоком" программы, такие как, итераторы циклов, и т.д.

    CyberManiac, имелось в виду "WHEN".
    в Паскале, кстати, очень удобно реализованы множества. поэтому можно писать i:=[1,2,3,4,5,6,7,8,9,10,20], что эквивалентно i:=[1..10,20]
    а ELSE вынести перед всей конструкцией с "WHEN":
    Код (Text):
    1.   x:=20 // Вместо ELSE
    2.   x:=10 WHEN y=1
     
  6. sysexit

    sysexit New Member

    Публикаций:
    0
    Регистрация:
    27 авг 2010
    Сообщения:
    176
    Пайтон?
     
  7. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    SEC70R_VA

    FOR i:=[1..10] - любой современный язык, включая последнюю версию С++
    это называется range-based for loop.

    x:=10 WHEN y=1 - питон, перл, маткад (и наверное много других)
     
  8. r90

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    SEC70R_VA
    Ну, во-первых, не while, а for. А, во-вторых, возможности C'шного for'а далеко не ограничиваются итерированием переменной по арифметической прогрессии. Там три выражения в for'е: инициализация, проверка на продолжение цикла, и переход к следующему элементу. Например это можно использовать и так: for(item = first(list); item != NULL; item = next(item)) { }; for(f = findFirstFile(...); f; f = findNextFile) {...}

    Запись циклов типа 'for i in [1..10]' называется syntactic sugar -- синтаксический сахар. Потому как сама по себе запись гораздо более ограничена в возможностях, чем for в общем виде, но когда она применима, она делает код лаконичнее. Такие языки как C вообще не парятся на этот счёт: если кому-то это надо настолько, что без этого никак, пускай он сам пишет макросы. А языки поновее, и особливо скриптовыеб очень любят "подсластить" код. Гляньте на perl, к примеру
    Код (Text):
    1. print $_ foreach 0 .. 10;
    . Или, скажем, в ruby:
    Код (Text):
    1. (1 .. 10).each{ |i| puts i }
     
  9. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    SEC70R_VA

    Хм... Какой язык программирования ты знаешь лучше всего и сколько лет у тебя в нем опыт? Ну просто интересно.
     
  10. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    а for сахар по отношению к while,
    while - сахар по отношению к if и goto
    и т.д. вплоть до asm

    достали со своим "сахаром", кулхацкеры млин
     
  11. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Я понимаю, глупо смеяться над опечатками, ну уж очень интересно получилось... :)
     
  12. 63F45EF45RB65R6VR

    63F45EF45RB65R6VR New Member

    Публикаций:
    0
    Регистрация:
    26 окт 2011
    Сообщения:
    70
    это может только по неопытности обычно весь этот шум
    синтаксисческий не замечаеш сразу видно алгоритм глаза не зацепляются на синтаксисе если автор ну уж очень сильно не постарался извратить код напротив глаза ищут только поток управления общий и вычисляют алгоритм
     
  13. Wizard109

    Wizard109 New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2006
    Сообщения:
    346
    В чем проблема то ?
    + на (Б-г прости меня)Паскале можно написать 10 строчек в которых без бутылки пива не разберешься, а можно на асме написать 1000 которые прочитаешь на одном дыхании...

    Читабельность исходников зависит от того, кто их написал.
    Ок. Чем это не читабельно ?
    C#
    Код (Text):
    1. int[] ilikesomeshit = new int[] { 0, 1, 2, 3, 5, 8, 13 };
    2. foreach (int i in ilikesomeshit)
    3. {
    4.    .....
    5. }
    63F45EF45RB65R6VR
    Вот кстати и пример:
     
  14. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    SEC70R_VA
    А что делать с i:=[10,9,...,1]? По факту интервал тот же, а задаётся задом наперёд. В Delphi 2009 и выше для новой конструкции i in ... в документации специально оговорено, что она исполняет цикл от меньших значений к большим.

    А это вообще две большие разницы. Допустим, функция Fucktion делает тебе сеанс киберсекса, а Function - взрывает компьютер.
    if MyVar then Fucktion else Function

    либо ублажает тебя, либо взрывает комп, а

    Function
    Fucktion when MyVar

    взрывает комп всегда.
     
  15. r90

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    GoldFinch
    Наоборот! Ведь while -- это урезанный for: можно писать for(;a<b;), а можно написать while(a<b).

    А вот здесь вы неправы совершенно. for/while загоняют программиста в рамки структурного программирования.

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

    А чтобы понять, до куда принято обобщать "синтаксический сахар", а какие обобщения уже лишние, посмотрите на Haskell. В Haskell слова "синтаксический сахар" появляются чуть ли не в reference manual. Я бы мог попытаться объяснить это своими словами, но это такие тонкие материи, что я боюсь не справлюсь.
     
  16. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    r90
    Сишный for - сам по себе анальнорожденный плод межвидового секса. У нормальных людей всегда был отдельно цикл с предусловием, отдельно - с постусловием и совсем уже отдельно - со счётчиком.
     
  17. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    Кури маны по perl, там много чего "не как привыкли" можно сделать.
    Но за это другие тебя могут поубивать.
     
  18. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    SadKo
    Тогда уж по Форту. Или по новомодному Фактору, который был бы идеальным Фортом, да только он не компилятор и потому с WinAPI как-то совсем дикостно скрещивается.
     
  19. r90

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    CyberManiac
    Вы явно не представляете себе, что есть "анальнорождённый плод межвидового секса". Гляньте, например, на макрос loop в Common Lisp, вот это даа... Вот это точно межвидовой секс, причём групповой и с элементами bdsm.
     
  20. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    r90
    Мда, брутально. Но до циклов в Прологе не дотягивает. Не случайно Пролог сохранился только в Японии - чтобы на нём писать, нужно быть абсолютно безжалостным к себе. Те, кто раньше шёл в камикадзе, сейчас идут в программисты на Прологе :)