Комментарии 69
А что насчет проблемы хорошего кода, которая поднимается в статье?
Мне кажется, что сейчас мы утратили тот энтузиазм, с которым раньше писался код. Системы были жестко ограничены в ресурсах и каждый старался хитрить и искать хаки для того, чтобы как можно более богатый функционал уместить в максимально малый объём. Сейчас все иначе (
Странно, почему смайл в конце грустный. Вы бы хотели поддерживать чужой проект, полный хаков и неочевидных оптимизаций кода?
При этом, если ресурсов хватает, не обязательно извращаться, но можно сразу писать довольно оптимальный код, грамотно и правильно использовать подходящие инструменты и типы данных без оверхеда.
Сейчас же критически мало кто озадачивается подобными вещами. Иначе бы не писали на электрон.
Необходимости в хаках как в статье, конечно, нет необходимости. Но и лозунг «проще докупить железа, чем оптимизировать» тоже уже перебор.
В текщих условиях скорость выкатки новой версии и поддержка множества платформ важнее идеальной оптимизации под одну конкретную платформу.
Да, Skype всё ещё есть, но люди из него уходят. Я сам очень долго был его поклонником (сказывалось то, что Skype действительно впечатлил своими фишками в 2005-2010 годах), и с грустью наблюдал, что люди из него уходят, всё больше контактов становилось «вечно серыми». Чем-то напоминало агонию ICQ. Всё надеялся, что может вместе с новым более простым протоколом (что они сделали на замену старому P2P) у них получится сделать быстрый мобильный клиент. Но они сделали только хуже — новый тормозной клиент для десктопа, а мобильный клиент тормозит как и раньше.
Я также надеялся, что они сделают нормальный web-клиент. Но знаете что происходит, когда я из своего самого распоследнего Firefox захожу на web.skype.com? Оно большими буквами говорит «unsupported browser» и не даёт воспользоваться даже самыми базовыми функциями. Для таких разработчиков, которые тупо блокируют какие-то конкретные браузера, есть отдельный котёл в аду. Я им посылаю искренние лучи ненависти.
Тем временем, у меня всё общение плавно переехало в Telegram. Skype всё ещё запускаю раз в пару недель проверить, вдруг мне кто-то там что-то писал. А вообще держу его на случай необходимости позвонить на обычный телефон в другой стране. Наверное, главная его фишка. Но нужно это всё реже и реже — за этот год ещё ни разу не пользовался.
функцией для мессенджера?
Да, у скайпа есть хорошие стороны именно в плане качества его звонков и конференций, а также интеграция skype-for-business с эксченджем еще залетает. Это и удерживает скайп еще на плаву.
Но свою главную функцию как современный и удобный мессенджер он уже потерял.
А почему видеозвонки и конференц-звонки должны быть определяющей
функцией для мессенджера?
Потому что любой пользователь мессенджера рано или поздно сталкивается с ситуацией, когда ему хотелось бы увидеть собеседника. А практически любой пользователь, который, извините за тавтологию, пользует мессенджер на работе, рано или поздно сталкивается с ситуацией, когда нужно поговорить втроем, вчетвером и т.д.
Функция отправки сообщений, она нифига не уникальна, ей обладает абсолютно любой мессенджер. И выбирают их как раз не по функции отправки сообщений, а по этим вот дополнительным фичам.
Хотел спросить что вот это значит:
Воз так не повторяется. Он пишет одну процедуру, которая принимает абсолютное значение M1, а потом меняет M1 и M2. Затем вызывает эту процедуру дважды, поэтому тот же результат достигается с вдвое меньшим количеством кода. Более того, замена M1 и M2 необходима ещё и в другом месте, так что код выполняет двойную работу.
Но пока писал код понял, что это чтобы не перезаписывать абсолютные значения в M1 и M2.
var M1 = -1;
var M2 = -2;
// Он пишет одну процедуру, которая принимает абсолютное значение M1,
// а потом меняет M1 и M2.
function F(x){
M1=M2
log(x);
};
F(abs(M1)); // 1
F(abs(M1)); // 2
Да уж, может и "гениально", но такой код я бы поддерживать не хотел.
abs_both:
call abs_m1
abs_m1:
выполнили обеззначивание M1
swap_m1_m2:
обменяли местами М1 и М2
ret
После ret'а он пройдет процедуру обеззначивания (abs_m1) опять и следующим ret'ом уже вылетит наружу.
Рефлексивный ret, трюк как трюк ¯\_(ツ)_/¯ чудо для тех, кто ассемблер не щупал никогда.
ps. То что этот код внезапно оказался эффективнее — не более чем совпадение. Думаю не составит труда написать и более быстрый код, если уж даже оптимизированная не по скорости а по размеру библиотека показала такой результат.
Я в 1989 писал подпрограммы для «действительных» чисел (т.е. для плавающей запятой), не зная о разработках Воза (но зная про самого Воза и даже побывал на выставке «информатизация в США» прошедшей в Магнитогорске, в том числе в закрытой части) для военных нужд в закрытом институте Челябинска для процессора 580ик80А (i8080A).
Но свои же вам неинтересны. )) Тут у вас на Хабре культ английских хозяев — ШША и Либералов… (местных инженеров презирают — так ведут себя оккупанты или предатели).
Ты это писал в 1989, а Возняк в 1976 — почувствуйте разницу.
А в 2015 шведы написали операционную систему Contiki:
Многозадачное ядро
Вытесняющая многозадачность
Протопотоки (Protothreads)
TCP/IP компьютерная сеть
Оконную систему и GUI
Удалённый доступ к рабочему столу компьютера, используя Virtual Network Computing
Веб-браузер (возможно, самый маленький в мире)
Персональный веб-сервер
Простой telnet-клиент
Хранитель экрана
и всё это благолепие в 64 килобайтах памяти на 8 разрядных процессорах...
Ты это писал в 1989, а Возняк в 1976 — почувствуйте разницу.
А в чем разница, если он не знал про работу Возняка, т.е. не основывался на существовавших до того решениях/знаниях? Вопрос же не в том, кто первый, а кто второй, а в способности написать компактный код в принципе.
Это с одной стороны, а с другой — стандартное перестроечное "не имеющее аналогов на Западе", под которое бодренько развалили индустрию.
была уже написана целая куча?
На здоровье, вы не о том.
Еще раз: в чем разница, если автор не знал про предшествующие работы?
Вопрос же не в том, кто первый, а кто второй, а в способности написать компактный код в принципе.
Человек же не по поводу «мы первые в мире, а я гений» высказался. Он подставил под сомнение правомерность называния человека гением по заданным критериям (способность написать такой-то компактный код).
Это можно перефразировать как «зачем Возняка назвали гением лишь потому что он написал компактный код, хорошо зная процессор, на котором работает — это может каждый, кто хорошо знает спецификацию ЦП, а в эпоху низкоуровневого программирования это, считай, каждый первый». Только с позиции ЯВУ и сегодняшнего дня, среднего сегодняшнего прикладника это «гениальные трюки», но не более.
Я не защищаю ту или иную позицию, просто отмечаю, что вы спорите о том, зеленый ли крокодил, или длинный.
А почему автор не знал про предшествующие работы — в 1989 про работы 1976 года? А потому, что не читал журнала Доктора Доббса за 1976 год.
И изобрёл велосипед, чем гордится и называет это "не имеет аналогов на Западе".
Небольшое лирическое отступление. Не так давно в интернетах был технический микрохайп на тему "коловратная машина инженера Тверского". Какой был гений Тверской, как его не понимали в XIX веке и всё такое… И я, в общем-то, проникся и заинтересовался.
И пошёл я на сайт archive.org (террористическая организация запрещённая роскомнадзором в нашей стране) и скачал английскую книжку XIX про паровые машины. А там… и такие машины, и сякие, и коловратные (кстати, Уатт изобрёл) и поршневые и всякие разные, и даже двигатель инженера Тверского присутствует, правда имя изобретателя другое и даты лет на 20 раньше.
Такие дела. Но у нас же всё "не имеет аналогов на Западе", даже велосипеды.
Вот такие дурачки как-ты стонали в то время — «как плохо жить», а сейчас стонут опять — «как хорошо было в СССР» )) Этот журнал в России появился самое раннее в 1991 — ну так, чтобы в каждом киоске.
А спустя 30 лет можно конечно наврать, как ты (и тебе подобные обзорщики жизни в СССР, никогда там не жившие, копи-пастеры картинок из инета ))), что он появился и в 1985, ну конечно )) ха-ха, где-нить в Москве, в гостинице Метрополь или центральной Союзпечати. Но это не Россия, это цельно-нерезиновая.
И в таких журнальчиках печатали не программы на АСМе, а обзоры игр для дурчаков игроманов, то, что сейчас любой дурной ребёнок делает в ютубе. ))
В то время достать информацию по процессорам можно было либо через журнал, книгу (по блату в книжном магазе), либо BBS, либо официальное ТВ. В Челябинске было аж 2 канала ТВ.
Блата в книжном у меня не было (без меня разбирали книжки), а BBSок было штук 30, и только пара из них хоть боком про компьютерную технику, остальные для таких как ты — игроманов-дрочеров )), впоследствии ставших дурными программистами с Хабра.
отсутствие литературы или недоступность железа никак не являются оправданием, т.к. в статье просто освещается факт применения красивых «манёвров», для оптимизации кода, не более.
А почему автор не знал про предшествующие работы — в 1989 про работы 1976 года? А потому, что не читал журнала Доктора Доббса за 1976 год.
И изобрёл велосипед, чем гордится и называет это «не имеет аналогов на Западе».
Да на здоровье, пусть он по факту переизобрел велосипед, будучи в информационном ваккууме и имеет супер-мега надутое ЧСВ. Не в этом вопрос, бог ему судья с такими заходами.
это может каждый, кто хорошо знает спецификацию ЦП, а в эпоху низкоуровневого программирования это, считай, каждый первый
https://ru.wikipedia.org/wiki/Contiki
… далее по ссылкам. Первый релиз был в 2006 под С64, сейчас актуальная v3.0.
В 90е для ZX-Spectrum сочинялось много ОС, только приложений под них не было, т.к. даже текстовый редактор хотел всю ОЗУ и под ОС ничего не оставалось.
Contiki is used in numerous commercial and non-commercial systems, such as city sound monitoring, street lights, networked electrical power meters, industrial monitoring, radiation monitoring, construction site monitoring, alarm systems, remote house monitoring, and so on.
For more information, see the Contiki website: contiki-os.org
Класс. Ардуино конца 80х. Понравилась фраза, "листинг программы перепишите в ПЗУ." Радиолюбители того времени были очень терпеливыми.
Ну и, само собой, в основном ошибки оставались незамеченными. Потом введенное вычитывал вдвоем с кем-то из родителей (мне лет 14-15 было) — вывел дамп на экран и один читает, второй пальцем по журналу ведет и сравнивает.
Потом просто стали печатать контрольную сумму поблочно.
Я в 1989 писал подпрограммы для «действительных» чисел
для процессора 580ик80А (i8080A).
культ английских хозяев — ШША
Жека, у английских хозяев из ШША в 1989-м вышел 486-й процессор. Миллион транзисторов, кеш первого уровня на кристалле, встроенный FPU и т.д. Можно мы твои слегка припоздавшие заслуги благополучно забудем?
Отличного программиста нашли, надо брать!
он должен был выполнять операции с плавающей точкой
Зачем?!
Которые смогут скомпилировать твой код с нужными параметрами — минимальный размер или максимум производительности итд.
Например, на программируемых калькуляторах типа БЗ-34/МК-61, чтобы втиснуть программу в их 98/105 команд, типовым способом выжать ещё 1-2 команду было такое подгадывание адреса перехода, чтобы в другом контексте он воспринимался как код команды.
Я нашёл отличного программиста по имени Стив Возняк