dr_klm: (Default)
[personal profile] dr_klm
На следующей неделе готовлю популярную лекцию по Unix, Linux сетям и т.д. Вчера делал слайды по истории Unix. Это, конечно, только одна из сюжетных линий, но разница в подходах между академией и бизнесом уже прослеживается.

Вот Multics. Создавался консорциумом MIT + Bell Labs + General Electric. Во главе был MIT (уже хотя-бы потому, что при развале консорциума проект остался там), академическая составляющая была сильна. Планку поставили заоблачную: много пользователей, защита, разделение времени. Проект получился сложным и невыполнимым. На его обломках возник упрощенный одно-пользовательский вариант -- Unix, ставший большим коммерческим успехом. Еще большим успехом стали CP/M и DOS, разработанные еще позже (а значит тоже с использованием опыта Multics и Unix), но только еще более упрощенные.

Такое положение дел мне кажется довольно универсальным. Люди в академии имеют тенденцию ставить себе запредельные цели. Эти цели (часто) не достигаются и (тоже часто) не достижимы вообще. Коммерчески успешные проэкты, по отношению к академическим, как правило, отличаются в сторону упрощения, снижения планок. С другой стороны, они строятся из академических обломков. Построенных, в свою очередь, на деньги бизнеса (как, например, в консорциуме, создававшем Multics).

Тоесть да, круговая порука. ;-) Но все-же стратегии постановки планок стабильно разные.

Date: 2007-03-25 06:19 pm (UTC)
From: [identity profile] yurri.livejournal.com
Ну это как раз достаточно очевидно.

Бизнес заинтересован в решении проблем, находящихся в пределах понятийного поля, а наука заинтересована в расширении этого поля.

Date: 2007-03-25 06:51 pm (UTC)
From: [identity profile] dr-klm.livejournal.com
Это да. Векторы очевидны. Сложность во взаимосвязи.

С точки зрения бизнеса научные проэкты очень невыгодны. С другой стороны, большая их часть неизбежно _должна_ проваливаться для того, чтобы прогресс шел вперед, и, в конце-концов, расширялось поле для бизнеса.

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

К.Л.М.

Re: Reply to your comment...

Date: 2007-03-25 06:59 pm (UTC)
From: [identity profile] yurri.livejournal.com
> С точки зрения бизнеса научные проэкты
> очень невыгодны.

Далеко не всегда. Рано или поздно игроки делят существующее поле, и чтобы обойти конкурента или влиться в число игроков, надо проспонсировать расширение этого поля, чтобы встать на новом плацдарме самому.

> Оптимальный режим оказывается
> неустойчивым.

Ну так это и есть эволюция! Никакого intellegent design, самоорганизация, естественный отбор. Технология довольно неэффективная, зато уж точно ведущая к развитию, если в нём есть необходимость.

Другое дело, что иногда становится видно - вот это хорошо бы развить уже по разумному плану, а не самотёком, а то как пить дать заглохнет - сейчас ведь это никому неинтересно, а идея хорошая.

Date: 2007-03-25 07:21 pm (UTC)
From: [identity profile] dr-klm.livejournal.com
Не знаю-не знаю...

> чтобы обойти конкурента или влиться в число игроков,
> надо проспонсировать расширение этого поля
К сожалению, вся проблема в той самой неопределенности исхода научных исследований. Большинство таких проспонсированных проэктов все равно развалится и к рассчетному расширеню игрового поля не приведут. А если и приведут, то какими-нибудь окольными путями и далеко не сразу, причем сделают это совсем другие люди, в рамках других проэктов, которые финансировались совсем с другой целью. ;-) Я поставил смайлик потому что похоже на шутку, но это не шутка, именно так по большей части и бывает...

После развала многопользовательского Multics (исходного финансированного совместно с бизнесом проэкта), Unics задумывался как однопользовательский вариант. Потом появился двух-пользовательский режим. И только потом, через итерацию, он стал, фактически, таким-же, каким должен был стать Multics.

> самоорганизация, естественный отбор
Проблема с естественным отбором в науке в том, что не из кого отбирать. Обучение одного ученого стоит очень дорого, мастерство* при этом он набирает всю жизнь. Если его, допустим, после каждого неуспешного (с точки зрения заказчика) проэкта казнить -- некому будет работать.

К.Л.М.

* Мастерство, причем, заключается не в том, чтобы уметь делать что-то новое и всем нужное. Этому научиться нельзя. Мастерство ученого заключается в том, чтобы не наступать на старые грабли. Точнее, делать это редко, а если и наступать, то на такие, на которые уже никто давно не наступал, в надежде, что повезет и таки нога станет на дорогу, где нет граблей. Наука это блуждание в потьмах по полю усеянному граблями. Мастерство заключается в том, чтобы чуять грабли, но оно отнюдь не гарантирует, что удастся найти дорогу.

Re: Reply to your comment...

Date: 2007-03-25 09:05 pm (UTC)
From: [identity profile] basp.livejournal.com
>> С точки зрения бизнеса научные проэкты
>> очень невыгодны.
>Далеко не всегда.
Из интервью Александра Степанова:
Сейчас в Америке реально осталась одна компания, которая может себе позволить фундаментальные исследования. Это компания, которая является нерегулируемой монополией, она называется Microsoft. И они действительно ведут кое-какие фундаментальные исследования, но все это совершенно несравнимо с тем, что раньше делали AT&T и IBM. Финансовый климат не позволяет даже таким большим компаниям, как HP, вкладывать достаточно денег в фундаментальные исследования. А средним компаниям размером с Adobe климат не позволяет вкладывать даже в прикладные исследования.

Date: 2007-03-25 10:22 pm (UTC)
From: [identity profile] dr-klm.livejournal.com
Еще "осталась" и разрастается компания Google...

Но все равно компании не могут, не должны, и не будут проводить сколь-нибудь значительных фундаментальных исследований. Исключая, конечно, PR акции, направленные опять-же на зарабатывание денег, либо прихоти владельцев, направленные, как правило, на удовлетворение их политических амбиций. От этого науке, конечно, может быть польза, но никакой структуры, сравнимой по масштабу, эффективности и преемственности с государственной, компании создать не могут. Они, в конце-концов, так долго не живут ! И, хоть на начальном этапе их эволюции, сопряженном с получением сверх-прибылей, руководство компаний и может поддаться идеализму* -- этот этап быстро заканчивается и сменяется этапом прагматизма, когда каждая копейка на счету и работает. На этом, самом длинном этапе своей жизни, ничего, кроме прикладных исследований, направленных на конкретные приложения с перспективой быстрой отдачи, компания (руководство которой в здравом уме) вести не будет.

Компания должна платить налоги. С них и будет финансироваться наука -- общественно-полезная кооперативная деятельность. Деятельность компаний соревновательная, направленная на увеличение собственной (а не какой-то там "общественной") прибыли. В науке-же не может быть соревнования. Как только оно там появляется в любой форме -- начинает царить обман и наука перестает быть наукой. Обманом ведь проще "победить" ! Ну рекламу ведь мы все видели ? А это и есть образец корпоративных "научных публикаций"...

К.Л.М.

* Если ставить бок о бок компанию и государство, то: 1) государства существуют дольше; 2) в них всегда и во все времена есть "ядро" из чистого идеализма (да, люди меняются, меняются партии и политические курсы, но ядро идеализма в государстве всегда есть). Финансировать-же фундаментальные исследования можно только из идеализма и никогда из прагматических соображений. Как для науки смертельно соревнование, так для компании смертелен идеализм.

Re: Reply to your comment...

Date: 2007-03-26 04:28 am (UTC)
From: [identity profile] yurri.livejournal.com
На Windows-платформах единственную, но слабую конкуренцию C++
составляет только Visual Basic, и то благодаря усердной поддержке
Microsoft.


Даже для 2003 года, в котором написана статья, не слишком достоверно.

Ну и вообще довольно странный источник для таких безапелляционных выводов.

Впрочем, что касается снижение интенсивности research в IT, то тут
вполне могу согласиться - но это процесс неизбежный, рано или поздно
отрасль должна была стабилизироваться, как стабилизирован, например,
автопром.

Если заглянуть в те области, которые сейчас занимают место IT
20-летней давности - например, в биологию и сопутствующие сферы
деятельности человека, то, думаю, там research будет представлен
достаточно широко.

Date: 2007-03-26 10:14 pm (UTC)
From: [identity profile] dr-klm.livejournal.com
В биологии (а особенно в фармацевтике) корпоративный research тоже прикладной. Моделируют при помощи программ, написанных в академии. Экспериментальные методики тоже из академии.

Да, есть свое know-how, тем и живут. Но важный момент в том, что держится все это в большом секрете. А значит умирает вместе с компанией, которая умирает, когда ее know how становится никому не нужным.

Секретность (результат соревнования) сильно ограничивает (по уровню, по фундаментальности) знания, которые может сгенерировать компания. Как правило, know-how представляет собой какую-нибудь мелочь, типа "здесь помешать, а тут подогреть"... Важную мелочь, но все-же не сравнимую по масштабам (и влиянию на мир) с фундаментальным знанием, хранимым и создаваемым академией. И это не прихоть судьбы, и не устранимая в будущем проблема. Это фундаментальное ограничение, которое будет пока компании останутся компаниями, а академия академией. Никогда, никакая компания, даже самая богатая, не сравнится по возможностям и ресурсам с множеством людей из разных стран, сотрудничающим кооперативно и обменивающимся информацией свободно. Именно потому, что академическая информация свободна, а корпоративная секретна, деятельность будущих компаний все равно будет основываться на академическом знании.

К.Л.М.

p.s. Еще (хоть в этом я не так уверен, как в предыдущем), мне не кажется, что в биологии был достигнут такой-же по масштабам прогресс как и в IT. Фармацевтика -- наука вечная, ее возраст сопоставим с возрастом цивилизации. Откройте старые газеты, и Вы найдете массу обьявлений о чудо-лекарствах, которые "вот-вот" и уже будут сделаны... Да, обоснования чудесности тех лекарств другие, не нано-технологические, но по-сути ничего не изменилось. IT -- это все-таки область человеческой деятельности, которая возникла из ничего меньше 100 лет назад... Это все-таки большая разница по-моему...

p.p.s. Кстати, я бы даже зашел дальше, и сказал, что проект GNU -- это как раз и есть "академия" в рамках сферы IT. Источник превосходства философии GNU над корпоративной в точности такой-же, как и источник превосходства академической науки над корпоративной. И точно так-же, как будущие компании все равно будут основываться на академическом знании (какое останется, на таком и будут) -- так-же и новые IT компании (наиболее яркий пример -- Google, или тот-же сервис LiveJournal) основываются на Free Software. Просто потому, что этот софт есть и свободно доступен.

Date: 2007-03-27 04:44 am (UTC)
From: [identity profile] yurri.livejournal.com
IT -- это все-таки область человеческой деятельности, которая возникла из ничего меньше 100 лет назад

Как область деятельности да, но в этой сфере не так много науки. Скорее, это инженерная область.

Скажем, производство кварцевых часов возникло совсем недавно, и в этой области тоже наверняка есть свои разработки и тенденции. Утрирую, но но для того, чтобы чётче выразиться.

Date: 2007-03-27 05:58 am (UTC)
From: [identity profile] ex-jetteim-.livejournal.com
если уж проводить аналогии, то не производство часов, а конвейерное производство как таковое.
IT - это логичное развитие идеи конвейера. вкалывают роботы, счастлив человек.
Собственно, "миссия" IT - это автоматизация рутинных операций. развитие IT остановилось тогда, когда всё заавтоматизировали настолько, что неокученным осталось только принятие решений, автоматизировать которое не получается по совершенно не-техническим причинам.
ну и вся возможная теория в IT была создана задолго до самой возможности реализовать её в практических задачах, оставаясь долгое время чисто умозрительными математическими экспериментами

Date: 2007-03-27 07:23 am (UTC)
From: [identity profile] kvasimodo.livejournal.com
>>что неокученным осталось только принятие решений, автоматизировать которое не получается по >>совершенно не-техническим причинам
системы поддержки принятия решений - разве это не автоматизация?

RE: Reply to your comment...

Date: 2007-03-27 07:38 am (UTC)
From: [identity profile] ex-jetteim-.livejournal.com
Я не слышал об успешных внедрениях такого.
(deleted comment)

Date: 2007-03-27 02:46 pm (UTC)
From: [identity profile] ex-jetteim-.livejournal.com
Ясно, там как раз для них работа.

Date: 2007-03-30 11:14 pm (UTC)
From: [identity profile] faceted-jacinth.livejournal.com
> ну и вся возможная теория в IT была создана задолго до самой возможности реализовать её в практических задачах

Это не так. Из уже достигнутого -- видео- и аудиокодеки (удивительно, если подумать: формат mp3 появился в 98 году, до этого никакой альтернативы компактным дискам, которые нужно физически засовывать в компактный дисковод, не было), отдельные части криптографии (это уже в 80-х годах), собственно хтмл и далее жаваскрипт. Я не знаю, по-моему это скорее теоретические, чем практические инновации. Код интерпретации конкретно языка жаваскрипт в браузере -- практическое достижение, сама идея о возможности стандартизованного client-side скрипта и её централизованное претворение в реальность -- теоретическое.

Из пока недостигнутого -- истинная многопоточность на уровне языков программирования. Она нужна, уже сейчас бюджетные десктопы как правило двухъядерные, дальше будет больше, а средств это железо эффективно и автоматически использовать как бы и нет. И, в тему, фраза "развитие IT остановилось тогда, когда всё заавтоматизировали настолько, что неокученным осталось только принятие решений" тоже не соответствует действительности: программы пишут живые программисты, и именно автоматизация этого процесса уже довольно давно является одной из основных точек приложения усилий R&D в сфере IT. До конца автоматизирован он, естественно, быть не может, но то, что сейчас есть, очень далеко от идеала, хотя и довольно быстро развивается.

Date: 2007-03-30 11:30 pm (UTC)
From: [identity profile] faceted-jacinth.livejournal.com
А какие именно теоретические достижения есть на счету GNU? Не для флейма спрашиваю, но для самообразования.

R&D конкретно микрософта дал миру dotnet и, недавно, PowerShell. Мне кажется, что это не только практические, но и теоретические штуки: у IT есть такое свойство, идеи вроде "а давайте будем компилить безопасный код в машинные инструкции" или "давайте пайпить объекты, а не текст" сами по себе особой ценности не имеют, требуется proof of concept, причём аналогия с блужданием по неосвещённому полю, усеянному граблями, сохраняется. Вдобавок успехи тоже, как ни странно, немедленно попадают в public domain, ну тяжело как-то сохранять в тайне концептуальные know-how в мире софта, особенно что они, вроде, не особо патентуемы.

Date: 2007-03-31 08:15 pm (UTC)
From: [identity profile] dr-klm.livejournal.com
GNU и академия подобны, но не тождественны. Подобны в том, что какие-бы ни были достижения (практические или теоретические) -- они общедоступны.

Что касается теоретических достижений, то я бы сказал, что это общепринятая практика среди ученых -- оформлять свои (теоретические) результаты в виде свободно распространяемых программ (хоть и не обязательно под лицензией GNU). Хорошим примером является GAMS (http://gams.nist.gov/), практически за каждой программой там стоят серьезные научные исследования, результаты этих исследований опубликованы в научных-же статьях (в программах на них есть ссылки), т.е. даже по самому поверхностному формальному критерию эти результаты являются научными.

Согласен, что R&D в мире софта мало отличается от любого другого R&D. Ценность любой научной идеи значительно возрастает, когда она реализуется практически. До того, идеи часто долгое время бродят по умам, переоткрываются, отследить первого автора становится невозможным (именно потому, что нереализованные идеи имеют мало веса, их никто не отслеживает и быстро забывают).

К.Л.М.

p.s. Но вот насчет майкрософтовского R&D "давшего миру" дотнет -- я не соглашусь ! ;-) Тоесть "дать" то он "дал", но нового там такой мизер, что R&D я это постеснялся бы назвать. Просто Microsoft нужна была своя подконтрольная реализация Java. Вначале они саму Яву пытались "поставить на колени", а когда не получилось -- произвели дотнет. Ключ там не в инновации (чтобы добавить указатели -- особого ума не нужно), а в контроле. Чистом империалистеческом контроле над рынком. Так что этот "результат" не из области R&D, а из областе рекета.

p.p.s. Честно говоря, я не вижу в дотнет никакого смысла. Тоесть я как раз не вижу новизны и не понимяю -- почему народ писает кипятком от какой-нибудь реализации C в дотнет ? Зачем эти промежуточные слои, интерпретация и т.д. когда компиляторов C (прекрасных, корректных, оптимизирующих, векторизующих и распараллеливающих, генерирующих сразу машинный код) уже множество ? Если скажут, что интерпретация позволяет больших динамизм по сравнению с классическим компилированным кодом, то да, соглашусь, в некоторых случаях такой динамизм нужен, но тогда есть Java (!), которая с тем-же динамизмом, но еще и _реально_ не на словах а на деле, уже сегодня (а не в светлом майкрософтовском "принципиально возможном" завтра) платформно независима + еще и с возможностью (через gcc) компиляции прямо в машинный код.

Date: 2007-03-31 09:49 pm (UTC)
From: [identity profile] faceted-jacinth.livejournal.com
По поводу инновационности дотнета: видите ли, я довольно хорошо помню, как выглядела жава на момент релиза первого дотнета. Программирование в эклипсе выглядело так: программируешь пару часиков, потом жмёшь кнопку Garbage Collect и идёшь пить кофе. Жава же изначально позиционировалась как язык для разработки корпоративных серверных приложений, в банках, там. Ей не нужно было быть быстрой, чем она быстрее, тем меньше денег потратят банки на покупку сановских серверов.

А когда появился дотнет, с заявленным падением производительности в 5-10% по сравнению с плюсами на среднестатистической задаче, вот тогда-то чуваки из Sun зашевелились, начали срочно догонять дотнет, пытаться компилировать байткод, вот так как-то до сих пор и догоняют.

Если интересно, почитайте спецификацию C# 3.0 (http://download.microsoft.com/download/5/8/6/5868081c-68aa-40de-9a45-a3803d8134b8/csharp_3.0_specification.doc), она довольно наглядно демонстрирует креативность микрософтовского R&D. Конечно, можно спорить о том, насколько это всё "теоретическое", совсем нового там как бы и нет, но в качестве proof of concept того, что в живой язык программирования можно добавить type inference, lambda expressions и другие приятные штуки, с сохранением практически полной обратной совместимости, да так, что на этом действительно можно программировать, и работает оно быстро, вот в качестве такого proof of concept в натуральную величину оно вполне катит на достижение.

По поводу корпоративного R&D: кто-то из основоположников капиталистической теории очень правильно сформулировал её основу, цитирую по памяти -- "Мы не рассчитываем на благорасположенность булочника, когда покупаем у него хлеб. Он печёт и продаёт хлеб исходя исключительно из соображений собственной выгоды, и нам этого вполне достаточно". Сан разрабатывает жаву и поддерживает фаерфокс стремясь удешевить операционные системы и браузеры, чтобы продавать больше своих серверов, а вовсе не из каких-то альтруистичных соображений. Микрософт разрабатывает и бесплатно раздаёт дотнет фреймворк, урезанную версию MS SQL Server (ограничение в четыре гигабайта на размер базы, если мне не изменяет память, может ещё что-то), и Visual Studio без корпоративных наворотов вроде системы контроля версий (всё это бесплатно, то есть даром!), зарабатывая больше денег на продаже операционных систем. Очень неплохой результат для конечного пользователя выходит, на мой взгляд. Особенно что результаты собственно R&D оказываются полностью открытыми по определению, нельзя ведь выпустить новый язык, но закрыть его спецификацию. Да, мы, к сожалению, не знаем, какими средствами пользуются разработчики С#, так что им удаётся туда столько всего нового добавлять, сохраняя обратную совместимость. Что ж поделать, зато в результате у нас есть прекрасный C#.

ps: и посмотрите на PowerShell (http://en.wikipedia.org/wiki/PowerShell#Central_concepts), если интересно, конечно. Это -- command line interface нового поколения, не, ну правда. Заплатят за его разработку покупатели серверной винды, покупая серверную винду. Мы же можем пользоваться им абсолютно нахаляву и, более того, свободно использовать заложенные в него идеи при разработке своих шеллов. Не вижу никакого негативного влияния "корпоративности", скорее наоборот.

Date: 2007-04-01 12:07 am (UTC)
From: [identity profile] dr-klm.livejournal.com
Хм... ;-) Я вообще-то тоже эту историю помню. И могу точно сказать, что JIT в Java появились еще когда дотнета и в помине не было.

Garbage collector, согласен, в первых версиях Явы был отстойным... Но с тех пор в этой области произошел такой прогресс (кстати, в рамках академии, вот страничка одной из групп (http://www.cs.utexas.edu/users/oops/papers.html)), что, по сравнению с GC, явное распределение malloc/free просто отдыхает по производительности (если только программист не предпримет героических усилий по его оптимизации). Сборка мусора -- это как раз и есть шаг вперед по сравнению с явным распределением, причем, как с точки зрения удобства, так и с точки зрения производительности (потому что в современных GC память освобождается массово, без явного обхода каждого ее кусочка).

C# тоже использует сборку мусора. Да, начали, конечно, они уже с того момента, когда прогресс, стимулированный потребностями Java, привел к написанию очень эффективных сборщиков мусора. Потому, конечно, уже с первой версии C# сборка мусора была не узким местом, а наоборот ключом к повышению производительности. Но сборщики мусора в современных версиях Java не хуже, а может и лучше.

Powershell... ;-) Кстати, типично для Microsoft-овских "инноваций", когда изобретение старого велосипеда выдается за немалый прогресс. Даже не "технический", а не меньше чем "фундаментальный" ! ;-)

Замечательно, что, наконец, в Windows появилась (правда пока только экспериментальная ;-) возможность писать скрипты на C-подобном языке, хоть что-то похожее на readline и на tab completion. Но в Unix этому всему уже столько лет... ;-)) И шеллов явовских обьектно ориентированных, со всеми этими прибамбасами уже столько, что их и перечислить, наверное, может только Google (http://www.google.com/search?q=Java+Shell&ie=UTF-8&oe=UTF-8). Там и легковесные, и тяжеловесные, и обьектно-ориентированные, вообще любые... Вот beanshell (http://www.beanshell.org/manual/contents.html), например...

Мне, например, bash хватает, а держать запущенной явовскую виртуальную машину неохота (она все-таки требует довольно много ресурсов по сравнению с программами, написанными на чистом C). Единственная потенциальная "инновация", которую тут может сделать Microsoft -- загружать свой дотнет runtime сразу при запуске системы. Тогда да, пользователю будет _казаться_ что программы на C и на дотнете примерно равнозначны по производительности. В этом, наверное, одна из причин -- почему для Висты требуется столько памяти. Но Jvm тоже можно загружать сразу. Можно загружать, можно не загружать...

И наконец, язык, в который стихийно добавляются все ставшие buzzwords концепции по-моему как раз очень плох. Красота языка -- когда минимум концепций позволяет кратко записать максимум информации. Иначе очень быстро наступает комбинаторный взрыв вариантов написания одного и того-же кода. И это делает жизнь человека, которому приходится читать и поддерживать этот код гораздо тяжелее.

К.Л.М.

Date: 2007-04-01 07:27 pm (UTC)
From: [identity profile] faceted-jacinth.livejournal.com
"-- Это зашёл штирлиц. Сейчас начнётся флейм!
-- Нет, не начнётся!
... и начался флейм"


Ну и ладно, тоже интересное и познавательное занятие.

1) Все эти много слов в Ваших первых трёх абзацах стремятся замаскировать и изничтожить простое утверждение: в момент появления дотнета жава сосала. Ну как можно серьёзно говорить о перспективах языка, в котором сборка мусора подвешивает программу на десятки секунд, а то и минут? С тем же успехом можно было бы память и вовсе не освобождать, save state and reload было бы быстрее для толстого клиента или IDE, отдельные хипы для каждого треда (дискардящиеся по завершении) более или менее обеспечили бы потребности серверных приложений.

И тут -- о чудо! -- появляется дотнет с нормальным GC, и C#, который такой же как жава, но лучше (проперти, там, автоматический boxing/unboxing), и обнаруживается качественное отличие: C# может заменить С++ почти всюду! Ain't it a major achievement?

2) Вообще я не очень понимаю смысла сравнивать дотнет и JVM в контексте опенсорса. И то, и то является продуктом сугубо корпоративного R&D. Отличия появляются в стандартных библиотеках, которые в дотнете разработаны программистами микрософта, а в жаве (и на этом закончилась моя единственная попытка написать на ней Hello World), точнее в эклипсе образца 2005 года, есть замечательная табличка 3х3, где в первой строчке стоят аналоги винформ (Qt, Swing, SWT), затем ещё три варианта Application Framework и адаптеров БД. Такой выбор меня как-то обескуражил, а первый попавшийся жавапрограммер усугубил замешательство, заявив что лично он использует Swing, но он -- говно полное.
Круто, чё.

3) Вот beanshell, например
---
ыыы. Почитал падиаганале половину спецификаций этого beanshell. Неудачный гибрид жавы и жаваскрипта, зато с командной строкой.
Ещё раз: есть в хороших шеллах такая штука, пайп, pipe, обозначается значком "|". Очень продуктивная в плане написания скриптов. Так вот, в PowerShell по пайпам гоняются объекты, а не текст. Стандартизованность всего и вся тоже способствует.

mount "HKCR" "Registry" "HKCR"
cd HKCR:\CLSID
ls | foreach {$key = $_; foreach($p in $key.Property) {if ($p -eq "nLxxQf") {$key}}} | rm -Recurse

rm HKLM:\Software\Licenses -Recurse

rm $env:temp\*.tmp

3) Красота языка -- когда минимум концепций позволяет кратко записать максимум информации.
---
The Perl folks have this Perl Haiku competition each year. It's a nifty idea, and it's pretty amazing that you can write useful seventeen-syllable programs.

I tried it with Java once, and produced a valid Java haiku:

ArrayList myListOfInt = new ArrayList();

which, spoken aloud, reads:

ArrayList of Int
my list of int, equals new
ArrayList of Int

Maybe it's just me, but I find it pretty farging depressing that a simple declaration like that can be haiku-sized in Java.
(c) Стиви (http://steve-yegge.blogspot.com/2006/10/egomania-itself.html)

Если вы всё-таки прочитаете документ по ссылке (http://download.microsoft.com/download/5/8/6/5868081c-68aa-40de-9a45-a3803d8134b8/csharp_3.0_specification.doc), то, возможно, увидите, что все эти новые фичи были добавлены вовсе не в силу их баззвордности, а потому что они действительно позволяют кратко, читаемо и без лишней семантики записать максимум информации.

Более того, я вам забавный челлендж предлагаю: сформулируйте на Своём Любимом Языке (whatever it is) аналог следующей формулировки на ЭпплСкрипте: "set bar to messages of foo whose read status is false", предполагая, что всё, что нужно, дано (в разумных пределах). В терминах второго шарпа я это сформулировал без лишней семантики (и почти без синтасического мусора), но, кстати, не с первого раза, ибо моск довольно сильно отравлен сишной парадигмой.

4) Лучше б Mono занялись, честное слово =) Они как-то на втором шарпе пока застряли, а ведь в третьем тот же XUL используется и вообще всё клёво.

Date: 2007-04-01 08:47 pm (UTC)
From: [identity profile] dr-klm.livejournal.com
Нет, флейм не начнется. Потому что я Вас просто забаню, если что...

Ничего я не пытался замаскировать и сказал ровным счетом то, что я сказал. Причем, там каждое слово имеет значение (ну, значения могло быть и больше, но я в 3 часа ночи писал все-таки ;-).

К моменту появления дотнета _все_ проблемы со сборкой мусора в Java были давным давно решены.

Ява не разрабатывался изначально ни для Enterprise, ни для серверных приложений. С чего Вы это взяли ? Ява разрабатывался как язык приложений для интернета, в котором учавствуют машины разной архитектуры (а потому важна платформная независимость). Это потом он стал популярным в Enterprise и на серверах, но это уже отдельная песня.

brainfuck тоже может заменить c++ всюду. Но я не понимаю -- зачем вообще нужно c++ чем-то заменять ?

2) Я не сравниваю дотнет и Яву, у меня и в мыслях такого не было. Я на C# никогда не программировал и не собираюсь. С чего бы мне сравнивать ? Ничего кроме общеизвестного я о дотнете и не говорил, типа того, что там используется сборка мусора.

Просто Вы высыпали сюда кучу заблуждений относительно истории Явы и ее возможностей. О том, что будто-бы в дотнете есть какие-то новые по сравнению с Явой вещи. Перечисленное Вами есть в Яве, и было, когда дотнета еще и в помине не было. Кроме того, в Яве есть гораздо больше -- то, ради чего он создавался: платформная независимость.

3) Вообще лично для меня совсем не очевидно, что при передаче обьектов между программами пайпы имеют смысл. Тоесть мне понятно Ваше возбуждение, что вот-вот в Windows появятся вожделенные пайпы о которых так много говорили и даже на самом Microsoft ! Но мне с ними приходится уже давно сталкиваться каждый день.

Понимаете, пайп -- одномерная структура (и в плане реализации и в плане использования). Поток байт. Да, можно наворотить синтаксический сахар и создать видимость, что передаются какие-то записи с полями, типа обьекты. Но в Unix уже пол века проблемы разбить передаваемый через пайп текст на записи и выделить поля не существует. Народ это делает постоянно и даже не замечает.

Если расширять пайпы, сохраняя их одномерный синтаксис (программа слева, пайп, программа справа), ничего нового кроме "скрытого" парсинга не получится. Если-же выйти за рамки одномерной концепции (чтобы новое таки получилось), разрешить присоединять к программе несколько структурированных потоков от разных источников -- получим функции, принимающие несколько потоков аргументов и сообщений. Функции в beanshell есть.

А пайпы были в Unix уже, наверное, пол века. Если они Вам нужны -- запустите bash. Зачем ждать пока Microsoft инновационно создаст для Вас какой-то благословленный и "стандартизованный" Powershell. Берем bash, и вот они -- ПАЙПЫ ! :-))

3) Не сорите, пожалуйста, здесь текстовым мусором. Понятно, что благодаря изобретенному в Microsoft (да что там мелочиться, небось самим благословенным Билли Гейтсом ! ;-) методу Copy&Paste сегодя есть возможность скопировать сюда Ваши любимые анекдоты с анекдот.ру, приколы с bash.org, новости с ленты и т.д. Но, поверьте, читать это у меня желания нет.

4) Я думаю, что потребности в проекте mono не было и нет. С другой стороны, в компании Novell так не думают и решили вести этот проэкт. Это их право, мне остается только приветствовать, когда коммерческие компании вкладывают средства в разработку Свободных Программ.

К.Л.М.

Date: 2007-04-01 09:15 pm (UTC)
From: [identity profile] faceted-jacinth.livejournal.com
1) Не, ну правда. Ну на самом же деле я видел эклипс с кнопкой "Garbage Collect" в тот же год, когда вышел дотнет (хотя я об этом и не знал тогда). Это был какой-то устарелый эклипс что ли?

2) Перечисленное Вами есть в Яве, и было, когда дотнета еще и в помине не было
---
нука-нука? Когда в жаве появились проперти? Когда в жаве появился foreach (1.5, я знаю, через сколько лет после выхода первого шарпа?), когда в жаве появится автоматический boxing/unboxing? когда в жаве появится type inference?

3а) вот-вот в Windows появятся -- уже появилось вообще-то. И я уже им пользуюсь. Да, униховый пайп -- одномерная штука. Да, можно говорить, что передача по пайпу объектов -- это синтаксический сахар и "видимость" (на самом деле нифига не видимость, ботать разницу между filter и function в PowerShell). Но то, что луниксоиды пишут между пайпами разнообразные грепы и не замечают этого -- это не аргумент против того, что не пиша таких грепов можно добиться повышенной продуктивности. Даже на контраргумент больше похоже, честно говоря. "Скрытый Парсинг", муахаха. Его _нет_. Вообще нет парсинга, поймите это. Очередной коммандлет выплёвывает объекты, другой коммандлет их принимает и смотрит на их поля, безо всякого парсинга. Say you want a revolution?

3b) у Вас немножко глаза перекосило, Вы отнесли павершелловский скрипт ко второму третьему пункту (сорри, попутал) и не прочитали сам второй третий пункт. Зря, перечитайте. Самоё в нём интересное это:
я вам забавный челлендж предлагаю: сформулируйте на Своём Любимом Языке (whatever it is) аналог следующей формулировки на ЭпплСкрипте: "set bar to messages of foo whose read status is false", предполагая, что всё, что нужно, дано (в разумных пределах). В терминах второго шарпа я это сформулировал без лишней семантики (и почти без синтасического мусора), но, кстати, не с первого раза, ибо моск довольно сильно отравлен сишной парадигмой.

Date: 2007-04-01 10:30 pm (UTC)
From: [identity profile] dr-klm.livejournal.com
1) Зачем мне Эклипс ? Я не пользуюсь эклипсом. И не собираюсь отчитываться за эклипс непонятно какого-то года, который стоял у Вас на машине. Точно могу сказать, что разница между сегодняшними сборщиками мусора в C# и Java не принципиальная.

2) Я не сказал, что есть ВСЕ из перечисленного. Многое есть. Остальное можно добавить, если бы оно было нужно. Да что Вы ко мне пристали с этим C# в конце концов ? Если бы в Java было _все_ как в C#, он был бы C#. Как я Вам говорил с самого начала, добавлять в язык все подряд -- путь заведомо порочный.

Но если хотите -- вот, пожалуйста: язык программирования D (http://www.xakep.ru/post/32779/default.asp). Там уже добавили практически все, что есть в C# и еще десять раз по столько. Нужно Вам это ? Тогда скачивайте (http://www.digitalmars.com/d/index.html) и программируйте на здоровье ! Есть и front end к компилятору gcc (http://dgcc.sourceforge.net/).

3) Ну, нет и нет. Какая разница. Особенностей реализации powershell я не знаю и знать не хочу. Но скажу Вам по секрету, что даже при выполнении RPC делается сериализация и парсинг, да еще (в некоторых протоколах) не просто парсинг, а парсинг XML.

Да, если пайпы в PowerShell работают только локально -- можно обойтись и без парсинга. Но в Unix, кстати, есть еще fifo и sockets, через последние можно точно также прозрачно общаться и с другими компьютерами (http://unixjunkie.blogspot.com/2006/01/two-cool-bash-tricks.html).

3) Это что флажки Вы хотите установить по какому-то критерию ? Это уже называется "формулировать" ! ;-)) Под "сишной парадигмой" Вы понимаете, что после ключевого слова if условие нужно писать в скобках ? :-)))

К.Л.М.

Date: 2007-04-01 11:00 pm (UTC)
From: [identity profile] faceted-jacinth.livejournal.com
1)Точно могу сказать, что разница между сегодняшними сборщиками мусора в C# и Java не принципиальная.
----
Между _сегодняшними_ сборщиками мусора в жаве и дотнете действительно разница очень туманная, АФАИК в жавовском можно задавать разные параметры, не знаю, правда, насколько это полезно. Но это опять же запутывание вопроса, извините, я всё-таки хочу прямо сказать, что

Жавовский GC на момент выхода дотнета СОСАЛ.

А, следовательно, сосала и вся жава, потому что язык с GC, который _так_ работает, сосёт.

2) Я видел язык программирования D. Я даже видел Nemerle. Не нужно меня пугать разными словами, я их и так знаю. И я знаю, что на шарпе я прогаю безумно эффективно по сравнению с С, на котором я тоже много прогал и под разные платформы, включая микропроцессоры. Исчо раз повторю: давайте вы вначале прочитаете описание, а потом будете критиковать его по пунктам, типа что данный пункт -- это "всё подряд, buzzword", его можно было бы и не добавлять. Общие слова сосут хуже жавы.

3) Гыгыгы. Что происходит с моим каналом -- меня не ебёт, извините. Я -- программист, меня волнует тот язык, на котором я общаюсь с ОСью. И в нём, поверьте, нет никаких сериализаций/десериализаций, в нём я прошу дать мне процесс с именем *explorer*, и получаю, во всей его процессной полноте. Могу ему приорити понизить, могу команду какую послать. Могу килл сделать.

3б) Я что-то не понимаю. Я Вам дал корректную строчку на ЭпплСкрипте. Вы её можете переписать на Своём Любимом Языке? Это прямой вопрос, возможные ответы: "Да, могу, вот так >...<" или "нет, не могу".

Date: 2007-04-01 11:30 pm (UTC)
From: [identity profile] dr-klm.livejournal.com
Сосал, сосал, сосал, СОСАЛ... Это наверное какая-то навязчивая идея.

В Яве "сосал" (это чтобы Вам было понятно) только первый GC в версии 1.0. Потом в этой области произошли значительные улучшения.

Что касается Вашего эклипса... Вот мне интересно. Вы действительно думаете, что я должен ответить Вам за тот эклипс в каком-то там году ? В котором, как Вы говорите, Вы нажали на кнопку и он... Сколько там он собирал мусор ? Я уже почти запомнил... :-)))

Нет, мой друг. Я Вас таки забаню. Вам нужно остыть.

До свидания.

К.Л.М.

Date: 2007-04-01 10:28 am (UTC)
From: [identity profile] dr-klm.livejournal.com
Да, предыдущий комментарий я писал уже ночью перед сном, не перечитывая. Так что извините за стилистику и грамматику...

Добавлю тогда немного политики. ;-) Я очень плотно занимался Java когда эта область была одним из главнейших приоритетов для GNU. Дело в том, что тогда GNU/Linux еще не был достаточно популярен и Java, с ее платформной независимостью, виделась как ключевой способ привлечения коммерческих разработок. Сейчас, Java, бесспорно, тоже является приоритетом (я тоже продолжаю поддерживать JEL (http://kinetic.ac.donetsk.ua/JEL/) и готов выполнить любые изменения на заказ), но приоритет этот не самый главный. Важнее стимулировать написание "родных" программ для GNU/Linux. Сейчас, благодаря значительному укреплению позиций ОС GNU, это вполне по силам.

Кроме того, появились и другие способы писать платформно-независимые программы с серьезным графическим интерфейсом (см. например QT от Troll Tech и XUL от Mozilla). Сборку мусора к C и C++ тоже можно прикрутить без проблем...

К.Л.М.

Date: 2010-05-16 01:40 pm (UTC)
ext_605364: geg MOPO4 (Default)
From: [identity profile] gegmopo4.livejournal.com
Справедливости ради, C# очень сильно подстегнул развитие Java. Автоматический боксинг/анбоксинг, foreach, mod/out, различие struct и class — всё это в основном синтаксический сахар, но очень приятный сахар, значительно повышающий удобство программирования. До Java5 с генериками и некоторыми перенятыми у C# фишками, жавой невозможно было добровольно пользоваться — только под дулом энтерпрайза или в прокрустовом ложе мидлетов. C#, конечно, много выиграл от того, что стартовал позже, наученный чужими ошибками (в Java 1.0 было много архитектурных ошибок), но и сам хорошо простимулировал развитие. Не скажу насчёт преимуществ реализации виртуальной машины или сборщика мусора, но писать на C# было намного удобнее, чем на Java 1.4, а местами даже и чем на С++/QT3.

Писали же кипятком от C# и .NET потому, что это была первая стандартная технология, позволившая писать под Windows по-человечески. Первая графическая библиотека с layout managers. Наконец-то появились решения, давным-давно используемые программистами во всём остальном мире. Наконец-то использовали опыт предшественников. Это был прыжок на 10 лет (не в будущее, а из прошлого в настоящее).

К сожалению, плюсы перечёркивались непортабельностью. Запатентованные WinForms делают невозможной свободную реализацию, Mono — несерьёзно, сильно отстаёт, при более глубоком ознакомлении оказывалось, что для реализации более-менее нетривиальных вещей не обойтись без Windows-специфичного кода.

Date: 2010-05-16 11:33 pm (UTC)
From: [identity profile] dr-klm.livejournal.com
Избаловались на синтаксическом сахаре. Без сахара уже и Java не кофе. ;-)

Под Явовскую JVM была куча компиляторов с любым синтаксическим сахаром на вкус. Даже мой собственный, маленький, делал автоматический boxing/unboxing когда C# еще и в помине не было.

Местами удобно писать на любом языке...

Основное отличие Net от Явы -- работа с указателями, остальное синтаксический сахар. Указатели -- это зло. ;-) Сахар -- баловство. ;-)) Для Явы и сейчас и раньше написана куча разных синтаксисов на любой вкус.

при более глубоком ознакомлении оказывалось, что для реализации более-менее нетривиальных вещей не обойтись без Windows-специфичного кода.
Вот именно для того, чтобы так "оказывалось" вся эта бадяга с Net (а до нее попытка с MS Java) и была затеяна. Обычный vendor lock in...

Ява, кстати, уже и под GPL есть (вполне достойная, да еще и с возможностью статической компиляции непосредственно в машинный код как c++).

К.Л.М.

Date: 2010-05-17 07:39 am (UTC)
ext_605364: geg MOPO4 (Default)
From: [identity profile] gegmopo4.livejournal.com
А ЯВУ — это вообще в основном сахар. Пишет-то программу человек, а человек ограничен и любит комфорт.

Я не говорю, что в C# есть что-то принципиально новое. Они просто распиарили давно известные и испытанные решения (и «открыли» их для мира Windows). Именно это и заставило шевелиться окаменевшую жаву, на маргинальные язычки им плевать было, а C# замахнулся на те же ниши.

Собственно, если бы передним умом люди были бы так же крепки, как и задним, то все эти вещи следовало ввести ещё в первых версиях Java. И C++ не помешало бы разделение struct и class (теперь уже поздно). А за некоторое наследие C убить мало.

Непереносимость в .NET была не в указателях, не в неуправляемом коде, а в том, что например для перехвата щелчка мышью по заголовку таблицы не было предусмотрено стандартного хука, нужно было перехватывать низкоуровневые события Windows, использовать какие-то внутренние коды событий. Нельзя было переписать старое приложение полностью на «чистом» .NET. Половина примеров использовала нестандартные возможности. Для доступа к многим функциям необходимо было явно обращаться к старым системным dll (которых на других платформах, понятно, нет). В 2.0 и 3.0 многое, наверно, исправили, но всё же.

C# и .NET большой, огромный шаг в программировании для Windows по сравнению с Visual Basic и MFC, но к переносимому программированию не имеет ни малейшего отношения.

Date: 2010-05-17 05:26 pm (UTC)
From: [identity profile] dr-klm.livejournal.com
Указатели были единственной реально уникальной и при этом кросс-платформенной фичей .NET . Но и они -- зло. :-) Все остальное там -- зло в квадрате ! :-))
Нельзя было переписать старое приложение полностью на «чистом» .NET.
В этом, как я и говорил, состояла суть плана: "embrace and extend !" Вначале они пытались делать это с Явой, но, когда их отшили -- соорудили свой собственный .NET .

Да, возможно под Windows это и был большой шаг вперед, но я уже больше десятка лет* не пользуюсь Windows и не пишу специально под нее программ. Хотя, некоторые мои программы народ под Windows активно запускает. Например, тот-же Magnetism@home, который я кросс-компилирую при помощи mingw32 или библиотеку JEL, которая написана на кросс-платформенной Яве и работает (в т.ч.) и на GNU Java.

К.Л.М.

* Ближе даже к 15-ти, поскольку последней новой версией Windows у себя на компе я помню Windows 95. :-) Но и под ней у меня уже стоял Linux 1.2 в UMSDOS разделе. Потом некоторое время была двойная загрузка, после чего я понял, что обхожусь без Windows.

Date: 2010-05-16 12:32 pm (UTC)
ext_605364: geg MOPO4 (Default)
From: [identity profile] gegmopo4.livejournal.com
Вообще-то, CP/M не потомок Multics/Unix, а скорее кузен. Заимствования у Unix начались позже, в MS DOS 2.0 (иерархическая ФС), в MS DOS 3.0 (перенаправления потоков, каналы)…

Это похоже на параллельную эволюцию, нередкую для живых организмов, когда сперва одна ветка живых существ обзаводится некоторыми особенностями, которые позволяют ей доминировать, а позже другая ветка независимо и медленнее приходит к таким же решениям (иногда не в том порядке), но более совершенным (экономным), и в итоге побеждает. Так было с выходом хордовых на сушу, с появлением млекопитающих, птиц.

Date: 2010-05-16 11:17 pm (UTC)
From: [identity profile] dr-klm.livejournal.com
Those who do not understand Unix are condemned to reinvent it, poorly.

Что они и сделали. ;-) Конечно я не имел в виду преемственность codebase.

Насчет кто кого побеждает -- это вообще вопрос довольно тёмный. :-)

К.Л.М.

Profile

dr_klm: (Default)
Dr. K. L. Metlov

March 2017

S M T W T F S
   1234
567891011
1213141516 1718
19202122232425
262728293031 

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 20th, 2025 02:12 pm
Powered by Dreamwidth Studios