• avatar Robus
  • 0
Я не хочу что бы это называлось ЧИТАЕМЫЙ КОД! Это не читаемо, это не по правилам и не может нигде и не при каких обстоятельствах назваться читаемым. Называй это как хочешь, «фича», «супер удача», «невероятный прорыв мысли», но только никак не читаемый код. Читаемый это когда понятно что конкретно делает кусок кода. Я не говорю о том, что бы он был прост, а том что бы он был читаемым. А главное во всём этом совсем другое, это возможность инструмента, которым ты пользуешься. Возможность располагать больше кода на экране достигается выбором монитора с расширением и редактором способным работать с фонтом 6х7 пикселей, а не компилятором который даст тебе писать текст змейкой. Вот смотри я использую текстовый редактор только тот, который мне позволит работать с блоками текста, для построения таблиц. Я вообще не рассматриваю ни один редактор который не даёт мне такую возможность. Мне очень важно умеет ли он раскрашивать текст, но давать мне возможность отметить блок и порисовать в тексте на скорую руку картинки это важнее. Так что мне написать компилятор, что бы мог воспринимать магическую запись текстового редактора ради таблиц? Или тот же ALIGN, да всё равно что пишется текст спиралькой, это не экономит ни место в памяти ни такты процессора, без ALIGN для меня вообще нет компилятора. Он у меня вообще везде, и после ALIGN стоят не только 256, а 16, если таблица на 16 байт. А если надо что бы ALIGN не тёр до границы ноликами есть ORGALI, я на этом всём пишу прошивки для флешек, где надо генерировать HEX файлы, в которых нужно делать дыры из ничего вообще, просто пространство. Эти инструменты важнее на порядок записи в строчку. И речь идёт не о том, что ты пишешь не верно, а том, что этот код не читаем. ALIGN 256 это чёткое описание твоего желания, а ORG ((($-1)/256)+1)*256 это частный случай с учётом повезёт тебе с округлением или нет, и что бы ты не говорил это не читаемо. Можешь написать туда MOD, это так же не читаем. Это всё равно что описывать «if» через «for», поверь, я могу тебе сделать анализатор-генератор СИшного кода и поменяю местами все if и for, и это откомпилирует, но опять таки это не читаемо. Я понимаю, если бы вы обсуждали макросы, что-то типа вот такого:

INT:  PUSHA
      ...
      MUSIC.OUT
      CALL EFFECT
      MUSIC.STREAM
      MUSIC.PLAY
      ...
      THREAD.SWITCH
      POPA
      INT.END

Я верю, что каждый может в строчку написать сто-тыщ операций, но это не читаемо. Читаемы слова, объясняющие что ты там на прерываниях делаешь. И потом когда будет происходить «дебаг», править надо будет только макрос, в котором через двоеточие, по спиральке, змейкой и крестиком пиши как угодно. Опять-таки я не говорю про простой код, пусть он будет сложный, пусть будет ветвистый и выжатый до последнего такта, но максимально читаемый. А каждый пример который был тут приведён не несёт оптимизации, и не несёт информативность, он несёт только фичу.
И я ещё раз говорю, слово «мудак» я применяю только к тому, кто его применил ко мне. И да, я очень сильно разозлился, кода прочитал что я «мудак» только лишь потому, что кто-то вышивает крестиком, да ещё постыдно это называет читаемый код.
Robus, ну просто убери $ и все твои примеры станут сразу нормальными.

Т.е. проблема опять в том, что ты утрируешь немного. И хочешь писать по-своему. Но пойми, Вова напал на нас первый и мы (многокомандвстрочники) просто защищались. Я же не говорю всем как писать, я говорю что имею право писать и мне так удобно. И есть свои достоинства, далеко всё не чёрно-белое. А разные люди приходят и говорят, что ld b,c,d,e — плохая команда, и что $ в строке непонятно к чему привязать. А то, что у меня в коде нет ни первого и не второго видимо спросить забыли.
  • avatar nyuk
  • 1
Чо злой-то?
  • avatar Robus
  • 0
Если так всё радужно и прекрасно писания в строчку, то почему вы так «заминусовали» паренька, который что-то там делал на WCT? Я могу ошибаться, вообщем он утверждал, что пишет закорючками прямо в машинном коде. И главное, он пишет всё в строчку! О… Да у него в одну строчку вмещается так много кода, что вообще кайф. А не хотите ввести запись в формате BASE64? Шикарная штука 6 бит на 8 бит, да при 80-ти символах в строке можно 60 символов текста впихнуть, а сколько кода можно нагородить? НЕТ? А почему нет? Это выходи за пределы ваших правил? А ваших ли? — Не ваших? А… Кто-то это в популярном компиляторе реализовал .?.. Да — точно… Это истина высшей инстанции, только так теперь и надо воспринимать «асм», а то, что это не ассемблер Z80 — уже не важно. Правила языка спускаем на классную фичу. Не важно, что тема ЧИТАЕМОСТЬ кода, «фича» навязанная компилятором важнее. Теперь кто не так пишет как другие называется — «мудак», не важно, что не читается, не важно, что до этого пишем про «давайте писать код так, что бы другой мог заюзать», тут же налепили в строчку, и так удивлённо, — «а вы чего читать не умете, не можете понять ???». Ну тогда компилируйте вот такой код:
LD A,STRAT_ENCODE:LD B,8:LD HL,DATA:XOR (HL),LD (HL),A:INC HL:DJNZ $
И теперь угадываем DJNZ $ на какую из команд должен указывать, предлагаю в компиляторе делать значение адреса $ делать по RND на каждое двоеточие?
Код в строку не читаем. Да ляпать по клавиатуре меньше, да макросы как не использовали, так и не используем, но это не важно, главное это «фича» — в строку писать.
XOR A:LD HL,A:LD ($+3),A:JP (HL)
У вас такой команды LD HL,A нет, сделайте — будет, фича ведь, меньше клавиш нажимать, и модно как. А ($+3) генерируем по-рандому. Но ещё лучше записываем вот так
OzaKW4aECH488n4B1f3J412AaioCfmIGwe4KWW2ICb2
… Смотрите, какая компактная запись, а как читается? Ну просто прекрасно. От того что в СИ можно писать в строчку не значит что код будет читаем, это не значит, что так надо писать. От тог что в русском языке есть набор унижающих других слов, не значит что их надо применять, иначе давайте возвращайте забанненых тролей назад, они просто писали в строчку слова которые вы не можете правильно прочитать, а некоторые не могут прочитать потому что «мудаки». Про «мудака» — то про меня, конечно же. Вот по этой причине я и не выкладываю свои стати, я ведь «мудак» пишу на своём асаме, да в масоне.
  • avatar VBI
  • 1
отличная глава
Удивительно универсальная глава
  • avatar VBI
  • 0
мне нравится.
именно вариант с: нравится.
Дело не только в скорости, а ещё и в том, что у тебя строка делает ЧТО-ТО ОДНО. Это как одна команда в каком-то языке чуть посложнее. Считай, ты макрос ввёл.

Потому что мы все имеем опыта программирования на более высоком уровне, выделение строки для каждой команды слишком «разбавляет» код. Да, я тоже терпеть не могу вереницы присваиваний
ld hl,#4000,de,#4001,bc,6911,(hl),l:ldir

Но пора перестать мешать в кучу код в строку (нормальная идея) от синтаксиса шторма — это не одно и то же.

Голова не обязательно должна кружиться от кода в строчку:
ld hl,#4000 : ld de,#4001 : ld bc,6911 : ld (hl),l : ldir

Разумеется, любую, даже самую хорошую идею можно довести до абсурда. Но что это доказывает? Правильно, ничего.
нет, ну это край, конечно(:


dec bc:ld a,b:or c:jp nz,m1

вполне логическая связка, годная для быстроты ввода.
ld a,h, b,l,i,a,d,e,b,a,n,a,v,r,o,t: or a: jr z,milf

Если это прочитать быстро то можно вызвать демона :) Чем продолжительней строка тем круче демон.
  • avatar nyuk
  • 3
Дядечка очень в тему топика получился. Зажог и смотрит.

я пишу в sjasm код, получается .sna, для отладки ставится jr $, далее ставятся бряки сами.
  • avatar PheeL
  • 1
Я, кстати, в С очень часто обработку ошибок в одну строчку пишу, чтобы простыни снизу равной кол-ву основного кода не было когда с вложением проверки делаешь. Метку «error» использую в качестве аналога деструктора, если до этой проверки были выделены ресурсы (инициализированы драйвера, аллоцирована память (да, я пользуюсь динамическим выделением памяти)).
Типа:
...
if (OS_NULL == queue_hd) { s = S_INVALID_QUEUE; OS_LOG_S(L_WARNING, s); goto error; }
...
error:
    //free allocated resources
    return s;
  • avatar PheeL
  • 2
А ведь ещё можно монитор вертикально повернуть! :) Ну это у тех моделей, где подставка позволяет. Я в таком режиме документацию обычно читаю в *.pdf
Ну просто сидя в каком-нибудь Intellisense редакторе, ты всерьёз будешь мне говорить что может возникнуть проблема от того что у кого-то 5 команд в строке? Ну да, чуть другой интерфейс понадобится, но несерьёзно это как аргумент выдавать.

Напомню, в C разрешено больше одной команды в строке. И мы все до сих пор живы.
  • avatar Raider
  • 1


:)))

(шутка, shinilb0g!)
  • avatar Raider
  • 3
Я скорее о том что существуют два вектора — люди в сторону усложнения, и люди в сторону упрощения.
(Эйнштейн) «Все должно быть изложено так просто, как только возможно, но не проще.»

С этим тесно связан закон достаточного основания. Любая сложность должна быть весомо аргументирована. Но это уже из области построения систем, как таковых.
  • avatar Raider
  • 0
Написать «сочиняешь что попало» хорошая такая аргументация, ага. Перейдем от сущностей на людей ;)
Всё должно быть устроено ровно настолько сложно, насколько нужно! :)

Это не всегда означает просто, увы.