• avatar Raider
  • 1


:)))

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

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

Это не всегда означает просто, увы.
  • avatar Raider
  • 1
А вот с точки зрения рефакторинга — это хорошая, блестящая аргументация, которая бьет все остальное.

я кажется делал так: вводил две метки, одну на строке с командой, чтобы нельзя было ничего вписать между меткой, а вторую ставил вне строки. Т.е.
trb_play
track_pos:  ld hl,0

Соответственно, первая метка это имя функции для call/jump, вторая чисто для данных. Да, ее нельзя использовать «где-то там» без контроля, и это плохо, error-prone.
Плохо уже помню, но кажется конструкций вида label equ $+1 в некоторый момент просто не было… Сейчас лучше использовать label equ $+1, еще и потому на других машинах встретится именно это.
Выходит, у разных людей разная практика…
Ну серьёзно, просто сочиняешь что попало уже.
  • avatar Raider
  • 0
Не вполне размышлизмы, с моей стороны это напротив, хардкорная практика, практика, практика.
Сейчас конкретно я сижу перед браузером :) А вообще, бывает, работаю с кодом открывая три и даже четыре окна параллельно рядом друг с другом. Почему окна открываются слева-направо, четырьмя столбцами окон? Почему там код в столбец? Почему они не открываются друг-под-другом? (ну ок, два окна еще можно). И почему я матюгаюсь, скроллируя окошко влево-вправо, когда какой-то деятель нафигачил длинных строк? :)

Всерьез убеждаю тебя освоить редактирование с параллельным открытием нескольких окошек рядом… Дико удобно, да и если кто-нибудь видит, немедленно оценит твою крутизну :))))
  • avatar Raider
  • 0
Забыл еще написать (но думал об этом), что когда мы увидим дизассемблер, то команды идущие подряд в строке будут развернуты.
А когда кто-то напишет нормальный IDE — как ставить брейкопинты и степать прям по коду?
Есть много теорий по этому поводу. Например, есть такая теория, что любой конечный кусок кода должен более-менее помещаться в экран, без скроллингов и т.п. Опять же, любая техника быстрого чтения как раз о том, чтобы не бегать глазами по строкам, а видеть целиком.

Я думаю, что большинство таких рассуждений — чисто размышлизмы. Но на практике, запись в столбик придумывали на экранах 30-40 символов в ширину. Не знаю насчёт тебя, а я сижу сейчас напротив экрана, который даёт мне в терминале 210 символов в ширину. Ты всерьёз думаешь, что сможешь убедить меня потратить 3/4 этого пространства на пустое место?
  • avatar Raider
  • 1
VBI мне импонирует тем что у него упрощенный и правильный взгляд на мир. Все должно быть устроено просто.
Нет, ну в самом деле, конструкция
ololo 
 equ $+1
ld hl,0

вызывает кратковременное преткновение ума, необходимо пусть хоть и кратковременно, но все же понять что означает эта метка, вычислить ее значение в уме. Вместо equ $+1 для других команд там должно быть equ $+2 и даже equ $+3, а это уже error-prone.

Это основное.
Такжке для логической аргументации можно упомянуть нарушение принципа verbosity в командах которые используют эту метку.
ld (label+1),reg мне явно показывает что это само-модифицирующийся код, тогда как ld (label),reg такого не показывает, скрывает это от меня.
  • avatar Raider
  • 4
Вообще, это мой интерес.
Вопрос — как писать, сверху-вниз или слева-направо напрямую относится к психологии восприятия человеком, к работе ума. Тут не все так просто, не только вопрос удобства.

Логическая аргументация такова:
Ход вычислений — сверху вниз. И когда мы располагаем их слева-направо, это осложняет нам восприятие хода вычислений, так как приходится постоянно «переключаться» от сверху-вниз к слева-направо. Это может быть аргументированно там где требуется и общепринято, например при вычислении выражений, но если особой ДОСТАТОЧНОЙ на то необходимости не имеется, лучше этого избегать.

Это «удобно» до той поры, когда ты «в теме», пока тебе заранее известно что происходит в данном фрагменте текста программы. Но как только ты утеряешь это представление, и тебе надлежит РАЗБИРАТЬСЯ (вот в чем разница), подобная запись немного, но осложняет восприятие. Является маленьким препятствием, местом преткновения.
Вплоть до того что я иногда на автомате enter'ом возвращаю сложные строки обратно к представлению в столбец.

Ну и последняя аргументация. Если бежать и создавать к каждой строке комментарии отдельным столбцом, то подобные строки слишком широки и не дают нормально написать комментарии. К тому же, если будет столбец сплошных строк-комментариев, он «маскирует» такую длинную строку.

Так что… любой «выверт» имеет свою цену… :)
согласен, но способ запуска cp/m еще тот. Меня интересовал путный ассемблер и отладчик.
Ты неправ, интересного там очень много, но слишком всё самобытно сделано…
  • avatar VBI
  • 0
9 авторов всего
  • avatar VBI
  • 1
shinilb0g Вы Мастер Загадок!
ты моего кода не видел(:


;-----------------output sprite
outspr:
 ld (backsp+1),sp
 ld sp,hl

n=0
 dup 4

 dup 8
 ld de,(sq+n),bc,(sq+2+n)

 dup 2
 dup 8
 push bc,de
edup

 ld hl,0-16*6
 add hl,sp
 ld sp,hl

edup

n=n+4
edup
;-------------------8 линий дубль 2
 ld hl,$7E0
 add hl,sp
 ld sp,hl

edup


backsp:ld sp,0
 ret
  • avatar VBI
  • 0
добавлю ещё такую фишку, подсмотренную в коде у Грачёва — переменные компилятора:

x=#e0
	dup 16
		_poke sinpage_start+2,x
x=x+1
	edup
  • avatar VBI
  • 1
kowalski, Следите за нашим журналом!
В следующем выпуске!
Только у нас!
Всего неделя!
По одной в руки!