![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
С удовольствием прочитал вот эту статью: http://www.joelonsoftware.com/articles/APIWar.html
(кстати, ППИ = прикладной программный интерфейс = API. Не знаю, пользуются ли этой аббревиатурой еще, вообще не завидую переводчикам программерских материалов)
Хотя статья обьясняет, почему и как Майкрософт проиграл одну весьма важную для него войну, она отнюдь не анти-майкрософт. Скорее она выражает взвешенную точку зрения программиста, который выбирает инструменты для программы, которой работать следующие 5-10 лет. Я не нашел места, где бы я был не согласен с автором. Плюс, отличное чувство юмора и много мест, где я ржал.
"Майкрософт часто делает ставки, которые проигрывает. Например WinFS, разрекламированная как способ улучшить поиск, сделав файловую систему реляционной базой данных, игнорирует факт, что настоящий способ улучшить поиск - это улучшить поиск. Не надо заставлять меня впечатыавть метадату для всех моих фйлов, чтобы я выучил и мог использовать язык запросов. Просто имейте совесть и поищите долбаный диск, быстро, по строке, которую я напечатал, используя текстовые индексы и технологии, которые уже в 1973 г. перестали быть новыми и интересными."
"В начале 90х многие из нас думали, что большая битва будет между процедурным и ОО-программированием, и мы думали что ОО резко улучшит продуктивность. Я тоже так думал. Многие люди все еще так думают. Оказалось, что мы не правы. ООП - очень удобный прикол, но это не то что было обещано. Настоящее значительное улучшение продуктивности исходит от языков, которые автоматически управляют памятью для вас." (VB, Java, C#, Lisp..)
Из статьи становится предельно ясно, почему Intenet Explorer уже несколько лет не развивается (и не будет), что происходит с C# и почему гораздо больше программ на C# для веба а компании не спешат переводить свои существующие программы на .НЕТ.
В конце статьи есть немного рекламы софта, который автор разрабатывал, и я уже совсем ржал на вот этом скриншоте:
http://www.fogcreek.com/FogBUGZ/40tour/06.html
Он в деталях показывает путь ошибки, найденной клиентом через менеджеров и программеров в новый релиз.
(кстати, ППИ = прикладной программный интерфейс = API. Не знаю, пользуются ли этой аббревиатурой еще, вообще не завидую переводчикам программерских материалов)
Хотя статья обьясняет, почему и как Майкрософт проиграл одну весьма важную для него войну, она отнюдь не анти-майкрософт. Скорее она выражает взвешенную точку зрения программиста, который выбирает инструменты для программы, которой работать следующие 5-10 лет. Я не нашел места, где бы я был не согласен с автором. Плюс, отличное чувство юмора и много мест, где я ржал.
"Майкрософт часто делает ставки, которые проигрывает. Например WinFS, разрекламированная как способ улучшить поиск, сделав файловую систему реляционной базой данных, игнорирует факт, что настоящий способ улучшить поиск - это улучшить поиск. Не надо заставлять меня впечатыавть метадату для всех моих фйлов, чтобы я выучил и мог использовать язык запросов. Просто имейте совесть и поищите долбаный диск, быстро, по строке, которую я напечатал, используя текстовые индексы и технологии, которые уже в 1973 г. перестали быть новыми и интересными."
"В начале 90х многие из нас думали, что большая битва будет между процедурным и ОО-программированием, и мы думали что ОО резко улучшит продуктивность. Я тоже так думал. Многие люди все еще так думают. Оказалось, что мы не правы. ООП - очень удобный прикол, но это не то что было обещано. Настоящее значительное улучшение продуктивности исходит от языков, которые автоматически управляют памятью для вас." (VB, Java, C#, Lisp..)
Из статьи становится предельно ясно, почему Intenet Explorer уже несколько лет не развивается (и не будет), что происходит с C# и почему гораздо больше программ на C# для веба а компании не спешат переводить свои существующие программы на .НЕТ.
В конце статьи есть немного рекламы софта, который автор разрабатывал, и я уже совсем ржал на вот этом скриншоте:
http://www.fogcreek.com/FogBUGZ/40tour/06.html
Он в деталях показывает путь ошибки, найденной клиентом через менеджеров и программеров в новый релиз.
no subject
Date: 2005-06-05 09:59 pm (UTC)угу... в ущерб эффективности... :-)
no subject
Date: 2005-06-05 10:19 pm (UTC)Собственно, и в других языках это не проблема. Программисты не оптимизируют внешний цикл программы, а занимаются внутренним. Для внутренних же циклов всегда можно придумать эффективный алгоритм, который или вообще не будет создавать-удалять обьектов, или в конце концов можно написать его на С++ (пока такой необходимости не встречал). Все равно для целого проекта это будет эффективнее, чем писать всё на С++ или Дельфи. Ну и по той же причине, к примеру, я не вижу появления драйверов на С# или Джаве :) Есть вещи, которые традиционно останутся С и С++, к примеру, трехмерные двжики в играх. Так же, как до сих пор никуда не исчез Кобол.
Зато писать сложный UI на чистом MFC сейчас - замедлить в 10-15 раз выпуск конечной версии продукта.
no subject
Date: 2005-06-05 11:45 pm (UTC)но статья 2004 года, а сейчас народ все-таки потихоньку переползает на .NET (не только для WEBa)....
но мне все-таки не по себе, когда я не могу контролировать память напрямую... :-[
no subject
Date: 2005-06-06 12:25 am (UTC)На .NET народ переползает, да, однако ни темпы, ни обьемы не сравнить с паровозом эры распространения win32 со скоростью вируса. ИМХО, мы переходим во времена, когда скилс по интеграции и адаптации разномастных продуктов друг к другу будут на вес золота. То есть лучше знать всё и никогда не употреблять "это лучше переделать с 0" :) Хотя опять же, COM в копилке, как самая сложная и заковыристая технология, добавит больше всего к зарплате.
no subject
Date: 2005-06-06 03:41 am (UTC)no subject
Date: 2005-06-06 02:40 pm (UTC)трейдинг систему на чикагской бирже.
в четвертом жаба былдере был такой вполне себе ГУИ рисовалка..
сто лет назад в Вижуал С++ тоже была отличная ГУИ рисовалка.
не хуже чем в Вижуал Васике.
дык. жаба ТОРМОЗИЛА. и ЖРАЛА ПАМЯТЬ.
контора начала переписывать куски на с++
no subject
Date: 2005-06-06 02:51 pm (UTC)С другой стороны, тот же JBuilder или там IDEA или Eclipse отлично выживают с UI на джаве. Просто SWING - очень сложный API. Его нельзя "скликать", а то что генерит JBuilder можно сразу выкинуть в мусорник. У меня есть несколько весьма успешных и сложных UI в копилке (для трансформаций СУБД с графическими инструментами), однако в коде много нестандартных изощрений (извращений?). Короче, сделать можно все, просто... ну долго рассказывать, но у Джавы полно архитектурных проблем - в стандартных APIs. Взять те же EJBs. Ко всему нужно подходить с умом.
no subject
Date: 2005-06-06 04:11 pm (UTC)Собственно, this is what progamms do. They brake and feed on memory :D А винить надо кривые руки, менеджмент и "непредбачуваний збiг обставин".
no subject
Date: 2005-06-10 01:42 pm (UTC)no subject
Date: 2005-06-10 02:03 pm (UTC)no subject
Date: 2005-06-11 11:44 am (UTC)no subject
Date: 2005-06-06 03:11 am (UTC)no subject
Date: 2005-06-06 03:26 am (UTC)no subject
Date: 2005-06-06 04:50 am (UTC)Вообще, в таком случае помогает (грустное) знание дебильного устройства двух вещей: хашмапа и хашкода строки.
Кто-нибудь бы научил Сан какой-нибудь алгебре там, расстоянию Хэмминга, что-нибудь в таком роде. Но они гордые, они думают, что лучше их никто ничего не знает.
Кстати, если 20 строк, и так уж критично, может быть, стоит попробовать trie (см Кнут, том 3).
А что за идея насчёт gc? От него, имхо, вообще лучше держаться подальше.
no subject
Date: 2005-06-06 02:19 pm (UTC)Из-за этого же не могу воспользоваться ХэшМеп напрямую - там десяток референсов хранится на внутренние transient структуры типа EntrySet, которые мне не нужны. Тут такое дело, что при 20 парах уже даже прямой перебор в массиве всего 80% проигрывает хэшмепу (миллион чтений из HM занимает секунду, а перебором из массива пар - 1.8 сек). А память экономится в 2 раза. У меня сейчас есть идея одна, если выгорит, напишу результаты.
no subject
Date: 2005-06-06 03:40 am (UTC)no subject
Date: 2005-06-06 03:44 am (UTC)no subject
Date: 2005-06-06 03:54 am (UTC):-P
и никто меня не переубедит насчет эффективности... согласен, в 85% случаев оно не критично, но в остальных 15% без С никуда. а в С++ многое лишнее... вернее не лишнее, но многие вещи замедляют сильно. Inheritance,Virtual functions и прочий OOP-related junk.
no subject
Date: 2005-06-06 04:00 am (UTC)really?
Object Destruction: Inheritance does increase the object destruction overhead, as destructors for all the parent classes in the class hierarchy are invoked. There is the additional overhead of setting up vtable in the destructor. Virtual destructors also increase the overhead of object destruction.
Re: really?
Date: 2005-06-06 04:16 am (UTC)Все равно включен объект или унаследован - конструктор и деструктор придется вызывать.
А overhead на создание vtable совершенно пренебрежимый на фоне создания объекта вообще.
Re: really?
Date: 2005-06-06 04:18 am (UTC)Re: really?
Date: 2005-06-06 04:23 am (UTC):-)
Date: 2005-06-06 04:28 am (UTC)я к тому что у меня всегда настольной книгой был Керниган и Ричи, а не Страуструп.
Естественно - это не лучше и не хуже. это просто как оно есть... :-)
Re: really?
Date: 2005-06-06 04:52 am (UTC)Re: really?
Date: 2005-06-06 04:57 am (UTC)no subject
Date: 2005-06-06 03:58 am (UTC)no subject
Date: 2005-06-06 04:10 am (UTC)no subject
Date: 2005-06-06 04:17 am (UTC)no subject
Date: 2005-06-06 04:20 am (UTC)no subject
Date: 2005-06-06 04:55 am (UTC)Но, с другой стороны, верно: Знатоки Ядра тоже в почёте.
no subject
Date: 2005-06-06 05:01 am (UTC)Не знаю, правда, что такое atdp.
no subject
Date: 2005-06-06 05:14 am (UTC)no subject
Date: 2005-06-06 02:06 am (UTC)no subject
Date: 2005-06-06 03:28 am (UTC)no subject
Date: 2005-06-06 02:34 pm (UTC)я говорил про профсоюзы мелких шестереок-технишенов. из банков, телефонных компаний, ТВ,
ремонтно строительных и пр..
лично мы натыкаемся на угрозы забастовок и откровенный саботаж. в NY, NJ и прочий бостон.
no subject
Date: 2005-06-06 06:08 am (UTC)Huh?
Ну и по той же причине, к примеру, я не вижу появления драйверов на С# или Джаве
A driver is something you run in kernel mode, no? So I need a JVM in the kernel? No thanks :-)
no subject
Date: 2005-06-06 02:39 pm (UTC)А про драйвера как раз никто и не спорит.
no subject
Date: 2005-06-06 04:03 am (UTC)yes and no...
Date: 2005-06-06 04:11 am (UTC)no subject
Date: 2005-06-06 02:05 am (UTC)жаба и выжуал бейсик "улучшают продуктивность"..
"настоящее улучшение" это когда приходицца закупать суперпупер серверы,
потому что Все Тормозит Со Страшной Силой?
no subject
Date: 2005-06-06 03:35 am (UTC)Я могу доказать, что любой одно-экранный алгоритм на С++ может быть грамотно переписан на Джаве (или C#) без потери скорости, а часто и с ускорением - ибо иногда JIT может лучше отоптимизировать код, чем компилятор C++ - ему известно runtime environment.
no subject
Date: 2005-06-06 02:42 pm (UTC)no subject
Date: 2005-06-06 03:08 am (UTC)no subject
Date: 2005-06-06 03:41 am (UTC)Твой подход - конструктивный. Создать обьединяющий API. Создание формата - обычно подход деструктивный. Он повышает энтропию в этом мире :)
no subject
Date: 2005-06-06 04:10 am (UTC)no subject
Date: 2005-06-06 04:43 am (UTC)