Pull to refresh

Comments 32

прогоните хоть через ворд текст ,а потом еще самостоятельно перечитайте. Например:
В целом боритесь по мере возможности с тем, что в главе 5 было названо «не- «несущественной сложностью».
Спасибо, эту ошибку не заметил, исправил. Я перечитал текст 5 раз, но, как известно, глаз замыливается.
Тогда попытаюсь помочь не замыленным глазом :)
Они вообще лучше чи- читают двоичные команды, а не операторы ...
Удобочитае- Удобочитаемый код нужно писать для того, чтобы он был понятен людям ...
Исправил, спасибо за коммент.
затем чтобы его прочитали :)
людей, которые готовы читать 1000 страниц текста (или тем более платить до 1000 рублей за книгу), в разы меньше, чем тех кто готов иногдп прочитать четыре листа А4 виесто 20-50 листов в книге :)
К моему сожалению я не нашел книгу ни в одном магазине, даже в интернете с доставкой (живу в провинции :( ).
По этому рад всем таким статьям, где для моего понимания перевод :)
за GOTO программистам вообше руки отрывать надо (если они конечно не на asmе пишут)
10 PRINT("Меня клинит !")
20 GOTO 10

Самый простой и совершенный бесконечный цикл не может обойтись без GOTO. :)

P.S. Кстати, во многих старых Бейсиках (особенно прошитых в ПЗУ) не было понятия подпрограмм (SUB) и без GOTO там ну совсем никак.
самый простой бесконечный цыкл делается так
while (true)
{
}
слава богу на вышеописаных бейсиках сей4ас уже не пишут
Нет, это не самый простой и вот почему... Переведем на асм:

Вариант 1 (GOTO):
_______________________________
lbl:
mov ah,9
mov dx,offset Message
int 21h
jmp short lbl

Вариант 2 (WHILE):
_______________________________
lbl:
mov ah,9
mov dx,offset Message
int 21h
mov bh,0
cmp bh,0
je short lbl

while - это операция сравнения и мы получаем +2 бессмысленных оператора (+4 байта)...
я с точки зрения красивости кода имел ввиду.
конечно 4 байта во времена террабайтов сыграют большую разницу :))
Нет, самый красивый и простой бесконечный цикл делается в 5 символов на Haskell:
[1..]
Это не будет же циклом. Штука ничего не делает, пока к ней не обратятся. А с обращением будет уже не всё так тривиально :) и букффочки полезут.
С точки зрения красивости кода - for(;;);
8)
Так ведь
jmp $
ещё короче, или я уже подзабываю школу? :)
включите в своем компиляторе оптимизацию и посмотрите внимательно еще раз
Так это у вас компилятор глупый. Нормальные компиляторы давным давно умеют такие while'ы заменять прямыми jmp'ами.
Не так давно был поражён, увидев такую странную организацию ветвления (пример на Перле):


goto LABEL1 unless <условие 1>;

<блок кода="кода">

LABEL1:

<ещё блок="блок" кода="кода">

goto LABEL2 unless <условие 2>;

<блок кода="кода">

LABEL2:


Неужели человек таким образом хотел сократить вложенность кода, которая и без того была меньше 2?!
а что, `goto` ещё где-то остался?
но иногда он бывает необходим для выхода из вложенных циклов.
приходится замещать `goto` установкой и проверкой флагов.
Как известно, мозг человека может одновременно рассматривать 7±2 элемента. Поэтому очень важно стремиться к снижению сложности ПО.

Вокруг проблемы сложности ПО существует огромная масса недоразумений и заблуждений. Часть этих недоразумений вошла в жизнь разработчиков с лёгкой руки классиков, таких как Фредерик П. Брукс и Гради Буч. Часть этих недоразумений строится на непонимании разработчиками ПО природы сложности с которой они сталкиваются.

Советы в этой статье по борьбе со сложностью укрепляют эти недоразумения и заблуждения.

Начать я думаю нужно с того, что существует много видов сложности, и для каждого вида сложности будут свои методы борьбы с нею. К видам сложности относятся:

1. Сложность объёма работ. Сюда-же относится и невозможность воспринимать более чем 7±2 элемента. Из всех видов сложности эта является самой безобидной, и преодолевается простым распаралеливанием работ между работниками.

2. Математическая сложность. Преодолевается при помощи математического анализа.

3. Алгоритмическая сложноть. Преодолевается при помощи алгоритмического анализа.

4. Архитектурная сложность. Преодолевается при помощи архитектурного анализа, архитектурной декомпозиции системы.

5. Сложность предметной области. Реашается при помощи декомпозиции предметной области и абстрагирования.

И так далее.

Для борьбы со сложностью необходимо понимать с какой именно сложностью мы хотим бороться и применять соответствующие методы уже в зависимости от обстоятельств.
как-то вы сложно написали...
6. Сложность сепуления. Преодолевается сепулярным анализом.

Часто способы решения той или иной сложности становятся в разы сложнее, чем исходная сложность.
> Часто способы решения той или иной сложности становятся в разы сложнее, чем исходная сложность.

Я хотел сказать совершенно не это. Я хотел сказать что алгоритм qsort сложен, но эту сложность безполезно преодолевать при помощи декомпозиции алгоритма на составные части. Декомпозиция нужна для преодоления другого вида сложности - архитектурной. Точно так же сложность алгоритма qsort бесполезно преодолевать при помощи абстрагирования. Абстрагирование предназначено для преодоления сложности предметной области.
UFO just landed and posted this here
угу, 3 раза прочитал... так и не понял, что имелось ввиду. Хотя подозреваю, что это всяческие фрагменты кода подразумевающие неявное знание реализации. Например:

Метод возвращает вектор из N первых слов в строке. Если передать -1 в качестве N, то он вернет вектор из всех слов в строке. -1, в качестве параметра, описано где-то в комментакриях, но пользуясь банальной логикой, сложно прийти к выводу, что можно передавать -1 для получения всех слов.

Ииенно таких (зачастую принятых в С/С++) конструкций, предлагает избежать автор...

=) Все ИМХО
Э-э, а как на счёт "Деталей мастерства" :)? Что-нибудь в продолжении будет? А то как-то правда одни "основы". Мне вот например нравится проектирование через шаблоны, разработка через тестирование а у вас как-то про это вообще ничего :(
это уже методики разработки. по таким вещам, как XP, agile dev и т.д. есть целые книги :)
но буду освещать эти темы. уже, Видимо, на новом хабре :)
без примеров текст не имеет смысла. Для меня почти все банальности, новичок не поймет вашу мысль или не дай бог заучит буквально.
Sign up to leave a comment.

Articles