Все новости от 24 февраля 2002 г. Выбор для программистов
КОММЕНТАРИЙ — Та быстрота, с которой меняется технология, сделала мир совсем другим, чем хотя бы пять лет назад.
Рассмотрим такой пример: к концу этого года рынком языков программирования по существу завладеют две платформы: J2EE и .Net. J2EE уже контролирует большую долю рынка, а Microsoft перевела все свои языки на .Net.
Однако, в отличие от ситуации пятилетней давности, разница между платформами заключается уже не в языках программирования, так как и Net, и J2EE включают по несколько языков. Интересно, что большинство программистов считает, будто времена специализации на каком-то одном языке подходят к концу. Причина в том, что Microsoft выступила с концепцией CLR (common language runtime). Она означает, что два языка Microsoft — VB.Net и C# — используют одну и ту же среду времени выполнения (runtime).
Я противопоставляю VB.Net и VB; несмотря на то, что Microsoft хотелось бы убедить нас в обратном, по существу это разные языки. Главное их различие заключается в том, что VB — язык процедурный, а VB.Net — объектно-ориентированный.
Зачем Microsoft было столь радикально менять свой самый популярный язык программирования? Конечно, для того, чтобы он мог работать с CLR.
Среда common language runtime не столь уж универсальна — на самом деле она поддерживает всего два объектно-ориентированных языка. И все же это замечательное достижение, не правда ли: одновременная поддержка разных языков? Я уверен, что это так, но другие могут не согласиться со мной.
Многие поспешат заметить, что JVM — Java runtime — тоже поддерживает другие языки. Это правда, но это, скорее, ловкость рук, чем естественное свойство JVM.
Итак, современным разработчикам придется пользоваться одним из трех языков: Java, C# или VB.Net. Как они соотносятся с C++ и VB, языками, доминировавшими на рынке пять лет назад? Если верить Microsoft, то C# — это логическое продолжение С++, а VB.Net — логическое продолжение VB.
Если так, то каким образом в эту компанию попал язык Java, пять лет назад только появившийся? Как вы уже догадались, многие люди смотрят на вещи немного иначе, чем Microsoft.
Путь к Java
Разработчики, переходящие с С++ на Java, приходят к выводу, что именно Java — естественное развитие С++. Причина в том, что Java обеспечивает похожие объектно-ориентированные возможности более надежным способом, используя runtime — примерно так же, как VB. Многие считают, что интерпретируемые языки давно доказали свои преимущества, оттеснив транслируемые языки в нишу высокопроизводительных вычислений.
На самом деле, если вы опросите отделы вычислительной техники по всей стране, то убедитесь, что Java уже вытеснил С++. Так какой же язык действительно служит развитием С++? Лучшим ответом будет просто то, что новые языки программирования, скорее, революционны, чем эволюционны. Если принять это, то VB.Net как замена VB начинает приобретать смысл. Однако остается вопрос, насколько в самом деле различны VB.Net и C#, раз они используют одну и ту же среду runtime?
Не так давно в области графических интерфейсов пользователей (GUI) появилась новая концепция оболочек (skins). Внешний облик GUI можно определить отдельно от его функционального содержания. Примером такого подхода служит Windows ХР. Пользователям ХР ясно, что внешний вид легко изменить. В ХР даже есть «классическаий» skin, который придает операционной системе вид более ранних версий Windows.
Почему я заговорил об оболочках? Потому что то же самое относится к языкам .Net. В .Net имеется всего одна среда runtime (функциональное содержание), но пользоваться ею можно посредством нескольких языков с разным синтаксисом (внешний облик).
Конечно, это упрощенный взгляд.
Оболочки позволяют определить внешний вид окна, но с их помощью никак нельзя изменить его функциональность. Продолжая эту аналогию, понимаешь, почему VB.Net так сильно отличается от VB. Если синтаксис VB можно было сохранить, то оставить неизменной ту же функциональность в абсолютно другой среде runtime невозможно.
Посмотрите на некоторые другие языки, портированные в CLR. В каждом случае у них пришлось отобрать какие-то важное индивидуальные черты, чтобы подвести под общий знаменатель CLR. Microsoft просто перенесла на программирование идею оболочек.
Вопрос о том, хорошо это или плохо для разработчика, придется решать читателям. Было ли лучше, когда можно было выбрать тот или иной язык программирования в зависимости от требований, предъявляемых к приложению? Или пусть все языки с разным синтаксисом станут выражением одного? Microsoft решила для себя этот вопрос, и выбора больше нет.
Мэтт Льотта был архитектором программного обеспечения в нескольких молодых компаниях в Сан-Франциско и Атланте. Сейчас он независимый консультант и докладчик на отраслевых конференциях.
Предыдущие публикации:
В продолжение темы:
|
|
| RoN - rodionlenta.ru 24 Feb 2002 6:15 PM |
VB - процедурный язык. Круто. Это что за профессия такая - "докладчик"?
|
|
| Chkaloff 24 Feb 2002 7:33 PM |
2 RoN: Ну, чесно говоря, он до версии 7.0 действительно был не до конца ОО. Тут на самом деле большое недоумение вызывает фраза: >Среда common language runtime не столь уж универсальна — на >самом деле она поддерживает всего два объектно-ориентированных >языка.
|
|
| Serge 24 Feb 2002 8:47 PM |
>> На самом деле, если вы опросите отделы вычислительной >> техники по всей стране, то убедитесь, что Java уже >> вытеснил С++. Мда... Ну зачем же так явно выдавать желаемое за действительное? По сути программ масштабных и для широкого пользования на яве нет.
|
|
| Qrot 24 Feb 2002 11:18 PM |
"Не так давно в области графических интерфейсов пользователей (GUI) появилась новая концепция оболочек (skins)." - ну полный кретин. интересно, что стало с молодыми компаниями, где он был архитектором ПО? |
|
| RoN - rodionlenta.ru 25 Feb 2002 1:27 AM |
2 Chkaloff: Просто существует специальный термин "объектное" (проектирование, программирование и т.п.). Т.е. использующее объекты без наследования между ними. VB до 7.0 версии - не объектно-ориентированный, но вполне объектный язык. А называть его процедурным, имхо, есть дискредетация. Профессиональный "докладчик" мог бы разобраться в терминологии, прежде чем докладывать. |
|
| Хрюн 25 Feb 2002 1:54 AM |
"Брехня!" (с) Откровенная чушь профана. |
|
| real 25 Feb 2002 8:47 AM |
2RoN:Это просто зависит от тех мест и тех слушателей для кого он докладывает. Скорее всего он "докладывает" в аудиториях для непрофессионалов, т.е. он популяризатор, а там можно молоть полную чушь, лишь бы было наукообразно, складно и малопонятно. Америка, блин, действительно богатая страна, если там можно нехило прожить являясь таким "докладчиком". |
|
| VB man 25 Feb 2002 3:34 PM |
не бу вдаватся в полемику про объектность VB :) скажу просто - автор полный чайник.... |
|
| Max - xam-softmail.ru 25 Feb 2002 7:00 PM |
Сколько лет уже пишу на Delphi, и не вижу никакого смысла переходить на .Net или Java |
|
| Dmitry - dgzhmail.ru 25 Feb 2002 9:37 PM |
Это статья ни в коем случае не профана, но популиста. Который упрощает, чтобы какой-нибудь менеджер его слегка понял. И пригласил его в свою фирму "доложить" :))) Я лично для себя основную систему уже выбрал - Delphi. А с появлением Kylix еще более обрадовался :) Borland всегда была впереди планеты всей по технологиям для разработчика. Тем более Delphi будет поддерживать .Net и иметь возможность писать кросплатформенные приложения Win/Linux вместе с Kylix. Это ли не прелесть ? |
|
| RoN - rodionlenta.ru 25 Feb 2002 9:54 PM |
2 Dmitry: > "Borland всегда была впереди планеты всей по технологиям для разработчика." Вот это новость... Я плакалъ. |
|
| Qrot 25 Feb 2002 11:58 PM |
2RoN: а ты разве не знал что паскакал и сипласплас вместе с дот-нетом в борланде придумали? :)) а потом подлые микросаксы сперли! |
|
| rGlory 26 Feb 2002 7:18 AM |
2Qrot Как, а Вы не в курсе? Что и с остальными доткомами. Оно и вполне естественно - вот такие "архитекторы" там работали |
|
| Rust 26 Feb 2002 9:42 AM |
Меня лично пока устраивает С++ Builder, к тому же 6 версия вышла... И поддержку .Net Борланд обещал. А если и буду на что другое прыгать - то скорее на Java, так как это уже относительно "старый" продукт, со всеми вытекающими. Честно говоря Мелкософт сильно и гадко кинул туеву хучу разработчиков на VB. Им ведь уже не адаптировать софт под VB.Net придется, а портировать... |
|
| Anatol 26 Feb 2002 10:40 AM |
Mda... vot tak stat'ja "The developer's dilemma", dejstvitel'no dilemma, tol'ko dlja teh, kto ee chitaet :-)) imho, eto navernoe dlja pre-developerov napisano, kak zdelat' pravil'nij vibor i razobratsja chto est' kto v etom "trudnom" mire... :-) 24 февраля, 2002, 23:18 - Qrot: "интересно, что стало с молодыми компаниями, где он был архитектором ПО?" Kinul on ih, kinul :-) i krepko navernoe kinul, esli stal dokladchikom. :-) P.S. dilemma - дилемма; затруднительное положение |
|
| RoN - rodionlenta.ru 26 Feb 2002 11:53 AM |
2 Rust: Ага... Ц-бульдер - полный рулез ;-) Помнится, понравилась мне в нём невозможность создавать объекты в стеке. Месяц ходил под впечатлением. |
|
| eXOR 26 Feb 2002 9:48 PM |
2 RoN: А че правда нельзя? 8-[ ]? |
|
| RoN - rodionlenta.ru 27 Feb 2002 1:57 AM |
2 eXOR: Ну, за любые классы не скажу, но для всех классов VCL - нельзя точно. Причём компилятор ругался такими словами, что наводило на мысль, что эта фича где-то в самом компиляторе зашита, а не в либах. А ещё мне понравилась такая песня - недавно с брательником младшим с дельфями копались, и хоть убей не смог я понять, как сделать, и можно ли вообще это сделать, чтобы объект класса, скажем, TQuery создавать вне формы. Перед этим с ним чуть ли не час 3.14ли о том как это круто - бизнес-логику от ГУЯ отделять, а за дельфяк сели - и отсосали :-)) |
|
| Limon 27 Feb 2002 11:04 AM |
> RoN VCL-классы в Билдере дельфовские, и их действительно нельзя создавать в стеке. А для создания TQuery вне формы подсунуть в конструктор |
|
| СтранниК - e_shukr.net 27 Feb 2002 11:31 AM |
У меня просто вопрос к аудитории. А что кроме концепция OOП - единственно правильная? Насколько мне в ней есть как достоинства , так и недостатки. Может есть еще другие пути(концепции) ? |
|
| RoN - rodionlenta.ru 27 Feb 2002 2:24 PM |
2 Limon: А какая, в общем-то, разница, с точки зрения C++, экземпляр класса на стеке создавать или динамически? Вот и выходит, насчёт С++ билдера, билдер он или не билдер - не знаю, но точно не С++. От С++ там только кейворды. |
|
| Qrot 27 Feb 2002 3:11 PM |
2RoN: ты малость гонишь.. уже не помню причин такого ограничения для VCL классов, но для нормальных ограничения по созданию в стеке нет. плюсовый компилер там вполне реальный, можешь им компилить проги на MFC/ATL/WTL/STL. |
|
| Qrot 27 Feb 2002 3:14 PM |
что же касается VCL классов - невозможность создания в стеке плата за полную совсместимость с дельфями в плане VCL и за ублюдочно реализованные классы в паскакале. |
|
| RoN - rodionlenta.ru 27 Feb 2002 4:48 PM |
Да я за обычные классы ничего и не говорил. Просто я до сих пор не могу понять, как так в классе можно извратится, что его можно создать через new, но нельзя создать в стеке. Хе-хе... Ещё, интересно, вот такое бульдер схавает али нет: // _alloca - выделяет память в стеке :-)) class A : public Some_Fucking_VCL_Class { public: void *operator new(size_t s) { return *_alloca(s); } void operator delete( void * ) { /*do nothing*/ } }; |
|
| Qrot 27 Feb 2002 7:53 PM |
2RoN: а ты проверь. а то мне его ставить совершенно не в кайф :) |
|
| Dmitry - dgzhmail.ru 27 Feb 2002 8:10 PM |
Не помню уже по никам (имена стесняются писать ?), кто мне там говорил про Borland (да и какой толк запоминать, если люди не разбираются в предмете спора ?), но напомню, что главный архитектор Delphi и C# - один человек. Жалко, переманил MS гения из Borland ... |
|
| RoN - rodionlenta.ru 27 Feb 2002 9:50 PM |
2 Qrot: А ты думаешь, мне его ставить вкайф ? :-))) Может кто-нибудь из здешних адептов сей дикой помеси (остаюсь при своём мнении: C-Builder - это Object Pascal с синтаксисом С) скажет ? |
|
| Дмитрий 28 Feb 2002 9:23 AM |
2 Ron: C++ Builder это C++ VCL сделана на Delphy, поэтому есть ряд ограничений и особенностей при испоьзовании VCL , которые описаны в руководстве и хелпе. Если хоть убей не смог чего то понять, наверное надо попробовать RTFM |
|
| Ефрейтор 28 Feb 2002 9:35 AM |
2RoN - Товарищ прапорщик, а если пушку на бок положить, то из-за угла стрелять можно? - Нельзя, по уставу не положено! >> void *operator new(size_t s) { return *_alloca(s); } Страуструп это делать не рекомендует. Читай: по уставу не положено. Удачи!
|
|
| Rust 28 Feb 2002 9:40 AM |
Народы! Это больше похоже на спор тупоконечников и остроконечников (с какой стороны яйца разбивать)... Какая разница...?! В чем удобно в том и работаем... Скоко говорили что Delphi и VB скоро вытяснят C++... Тоже говорили и о Java... Теперь вот С#... Поживем увидим... |
|
| Rust 28 Feb 2002 9:43 AM |
Народы! Это больше похоже на спор тупоконечников и остроконечников (с какой стороны яйца разбивать)... Какая разница...?! В чем удобно в том и работаем... Скоко говорили что Delphi и VB скоро вытяснят C++... Тоже говорили и о Java... Теперь вот С#... Поживем увидим... Многие вот тут не хотят инсталить Билдер что проверить чего то там... Кстати кто на чем сейчас работает? Проведем небольшой такой опросик???!!! ;) |
|
| Qrot 28 Feb 2002 11:37 AM |
2RoN: это такая помесь, что и подумать страшно.. с одной стороны, если на VCL пишешь, то разницы между на чем писать - на ObjectPascal или на С++ не видно вообще, ну только что когда свои дополнительные классы рисуешь (кстати, C++ Builder еще и паскакал компилить может :)). Но когда VCL не юзаешь, то имеешь чистый сипипи... другое дело, что в VC с ним удобнее как то работается, но это уже скорее фичи редактора, а не языка :) |
|
| RoN - rodionlenta.ru 28 Feb 2002 12:26 PM |
2 Ефрейтор: Загляни в сырцы STL - там это (operator new(...)) на каждом шагу. Страуструпа читал вообще-то давненько. Сразу и не припомню советовал он там это или не советовал. Но, имхо, подобные фичи придают особую вкусность С++, в отличии от различных "безопасных" языков без пойнтеров, со обязательной сборкой мусора и т.д. и т.п. |
|
| RoN - rodionlenta.ru 28 Feb 2002 12:33 PM |
2 Rust: Спорить не буду - о вкусах не спорят. Но, сдаётся мне количество дрянной халтуры, написанной полуобразованным ламерьём на дельфях перекрывает все остальные ЯП вместе взятые. Я видел херову тьму "программистов" на дельфях, которые не знали даже таких основ ВинАПИ, как обработка очереди сообщений, и это были не студенты, пишущие курсовик по IT, а люди, работающие над вполне коммерческими проектами. |
|
| Rust 28 Feb 2002 2:57 PM |
2 RoN: Насчет Delphi согласен... Сам пишу на Builder - но без VCL и прочей приблуды... только чистый ANSI. Некоторые вещи делаю с использованием компилера от VC++, только без всяких IDE, от VC++ остались только директории include, lib, да и bin в котором nmake, cl и link. Исходники соотвественно пишу в Builder (ну нравится мне его редактор, тут уж дело вкуса...), ну и верификацию кода там же. |
|
| Noname 28 Feb 2002 3:32 PM |
2RoN: Глупый... Все определяется перечнем задач, с которыми работает программист. Учитывая, что Делфи в основном применяют для быстрого написания клиент-серверных приложений, программисты, пишущие эти задачи, могут и не сталкиваться явно с обработкой очередей сообщений. Кому надо, тот и из Делфи работает с ВинАПИ. |
|
| RoN - rodionlenta.ru 28 Feb 2002 4:31 PM |
2 Noname: Видел я те клиент-серверные приложения на дельфи, где 800000 записей тянули с сервера и в грид засовывали. Делфи - язык отличный... Но не для разработки, а для того, чтобы любой баран нихера не шарящий в проектировании, программировании, платформе и технологиях мог сесть и почувствовать себя программером. Слабать рулезный проект, который скорее всего выкинут через полгода, предварительно слупив бабки с заказчика. Плавали, знаем... |
|
| Noname 28 Feb 2002 5:11 PM |
2RoN: Конечно, программисты разные бывают. Но чесать всех, кто пишет на Делфи, одной гребенкой - не правильно. На С++ тоже не одни только гении пишут... |
|
| eXOR 1 Mar 2002 2:01 AM |
2 RoN: Ты меня опять удивил... а что new не создает что - ли? Афаир все замечательно работает... хотя давно я уже дельфи не видел... |
|
| Skull - sibskullmail.ru 1 Mar 2002 4:54 AM |
2Noname: не, гении пишут на чистом ассемблере! Или на худой конец - на чистом С! :) |
|
| Programmer - cppcpp.cpp 1 Mar 2002 5:27 AM |
Все проблеммы от глупых манагеров которые слушают таких докладчиков и давят на программистов ! Это же полнейший олигофрен ! Он наверно и в туалет ходить не умеет ! Прямо в штаны себе докладывает ! |
|
| RoN - rodionlenta.ru 1 Mar 2002 9:21 AM |
2 eXOR: new, как-раз таки создаёт. Я за то писал, что нельзя сделать что-то вроде этого: void Q(TDatabase &db) { TQuery query; query.put_Database(db); query.put_SQL("..."); query.Execute(); } За верность сигнатур не ручаюсь - мог напутать, но идея, имхо ясна - хоцца объект создавать в стеке. Одна из причин, к примеру, почему хочется так - использовать обработку исключений. Обработка исключений, когда в try - блоке динамически создаваемые переменные/объекты - чистой воды геммор (не участвуют в раскрутке стека) |
|
| Qrot 1 Mar 2002 9:47 AM |
2RoN: меня смартпойнтеры из STL выручали |
|
| RoN - rodionlenta.ru 1 Mar 2002 12:14 PM |
2 Qrot: Смартпойнтеры - рулезззз, а ещё такая фичка по кексу: "ведущий пойнтер" template<class T> class Ptr { T *p; public: SPtr() {p = new T;} ~SPtr() {delete p;} }; class A { friend class Ptr<A>; protected: A(){}; }; И кто после этого скажет, что наличие пойнтеров - плохо из-за ручного управления памятью. |
|
| Qrot 1 Mar 2002 12:44 PM |
2RoN: "ведущий" поинтер Ацтой, ИМХО. вкупе с гранями и гарбаж коллекторами всякими. потому что вместо устранения возможных ошибок они только позволяют вносить новые. и еще, плюсы ведь чем хороши? тем что позволяют применить ОО подход и получить достаточно оптимальный код при этом - небольшой и быстрый, почти как на сях. а тут получается что код добавляется лишний, не несущий никакой функциональности в рамках задачи, да еще и накладывающий лишние ограничения. ацтой, однозначно. и чего вы все считаете что выделение/освобождение памяти через new/delete - это зло? это ж не прямая адресация, блин. так еще скажете что goto тоже зло :) |
|
| PTO - kruchkovkgb.ru 1 Mar 2002 1:26 PM |
Давным давно в Windows 3.1 (3.0 не помню уж) в одном из исходников таки встречался оператор goto (исходник функции DefWindowProc), так метка там называлась примерно следующим образом: icantbelieveiusedagotostatement... но в более поздних вариантах и от этого единственного оператора goto избавились... и наверноее не зря... ну а про "зло" от goto лучше всего Дейкстра писал... правда позжее Кнут показал несколько случаев, когда его использование оправдано |
|
| Qrot 1 Mar 2002 2:11 PM |
2РТО: сорсы виндов не наблюдал, но в мсдн его полно. с теорией то все ясно, но просто иногда возникают ситуации когда либо один оператор готу, либо хрен знает сколько кода. но вообще то это присказка была... со смайликом :) |
|
| RoN - rodionlenta.ru 1 Mar 2002 2:30 PM |
2 Qrot: На тему добра и зла. Видел как-то статейку про Жабу, не помню уже где, так там один из её разработчиков всерьёз божился, типа, они отказались от enum-ов потому что, это типа, путает программиста, это опасно, это - зло. Я плакалъ, ну уже сказали бы "впадло нам было их реализовывать", ну все ведь люди, я думаю, поняли бы. Но под любое кастратство подводить обоснование - это уже уродство. Лично мне goto всегда сильно помогал в ситуации, где нужны были ексцепшены, но по той или иной причине нехотелось их использовать. Насчёт граней - а как же тогда мой любимый КОМ ??? :-))) В общем всё это ньюансы. Скажу просто, за что я люблю С++ - в нём свободно создаётся любая хрень типа гараж-коллекторов, безопасных указателей, безопасных массивов, коллекций и итераторов и т.д. и т.д. и т.д., которая в других языках преподносится как супер-пупер-рулез достижение и навязывается при этом силком. |
|
| Qrot 1 Mar 2002 2:56 PM |
2RoN: КОМ КОМом, но в той книжке которую мы оба читали и откуда я эти умные слова вспомнил эта идея доведена до абсурда просто... все хорошо в меру про силком согласен полностью, мне поэтому жаба так не понравилась |
|
| Ефрейтор 1 Mar 2002 6:44 PM |
2RoN: Все это хорошо. Но подскажи, как узнать в конкретном случае на сколько резиновый стэк в данном месте программы, средствами C++. SoftIce не предлагать. Извини, но я работаю за деньги, а не из-за любви к искусству :( |
|
| RoN - rodionlenta.ru 1 Mar 2002 7:43 PM |
2 Ефрейтор: Хм... Но, если я пишу что-то подобное: void f() { CSimpleArray<int> a; int i = 1024; while(i--) a.Add(666); } то это не означает, что массив в стеке будет занимать 4096 байт. Если тебя действительно интересует, то размер стека можно назначить при сборке, либо при создании нитки. Посмотри референс на опции линкёра и на ф-ию АПИ CreateThread. Единственное чего я не понял, это то, как разница между динамическими и автоматическими переменными связана с искусством и деньгами. |
|
| glassy 2 Mar 2002 3:10 AM |
у кого как, а у меня праздники затянулись аж по самое нехачу. В отпуск даже отправили. По поводу ремонта. Отдыхаю, кад лабаю... по гостям хожу... красота... А си -- классный язык. |
|
| Skull - sibskullmail.ru 2 Mar 2002 12:45 PM |
2PTO: вах, круто. Видел я книжки Кнута в книжном магазине. Думал: брать/не брать. Но ради описания, где goto оправдан - обязательно возьму! :)) |
|
| PTO - kruchkovkgb.ru 2 Mar 2002 1:29 PM |
2 Skull: ба, да вы Кнута не читали!? It's explains a lot! (c) Сибирский цирюльник |
|
| glassy 4 Mar 2002 12:40 AM |
2РТО: да все мы их читали. Только вот увидели, чтобы под вин32 писать, подальше такие книжки надо держать. А когда на юниксы пересели, просветление и без них получили :) Страуструба-то я точно имел... |
|
| RIK 4 Mar 2002 1:26 AM |
2 glassy А как Кнут и Страуструп связаны с тем, под какую платформу вы пишете? По-моему, ни Страуструпа, ни тем более Кнута (первый том которого вышел в 1968 году, когда еще никакого Юникса не существовало) вы все-таки не читали, если такие вещи говорите. |
|
| Qrot 4 Mar 2002 4:25 AM |
glassy, есть подозрение что ты его именно имел... как в Американском Пироге, гм... а не читал |
|
| Skull - sibskullmail.ru 4 Mar 2002 4:39 AM |
2PTO: и что, мне идти, повеситься? Я ж экономист по образованию. А программирование - хобби. |
|
| PTO - kruchkovkgb.ru 4 Mar 2002 11:29 AM |
2 Skull: дык я и говорю... сие многое объясняет... Просто развелось очень много хобби-программистов, которые много чего рассказывают, даже часть ОС пишут, но при этом образования никакого не имеют... вон glassy - как не напишет чего, так дядьки смеются... он просто не понимает, что Кнут и Страуструпп это как Библия и руководство по ремонту швейных машинок - и то и другое книжки, обе про то, как что-то делать, но более между ними никакой связи... Я уже давно на собеседовании с новобранцами задаю вопросы - а кто такой Кнут? а Дейкстра? Вирт на худой конец... просто правильные ответы даже от человека не программиста по образованию много о нем говорят - о кругозоре, грамотности и т.п.. У меня вот в соседней конторе один местный гений 2 недели нечто писал, потом гордый пришел - я мол супер алгоритм придумал - и начал рассказывать, через 10 минут я ему с полки снял книжку и ткнул в описание 30 лет назад опубликованное... 2 недели коту под хвост... сейчас вроде читать начал - даже иногда спасибо говорит... Тут вот как-то был вопрос про Тезис Керча и машину Тьюринга - что-то я не видел там массы ответов, все только про тормоза ИЕ под Виндами... |
|
| Ефрейтор 4 Mar 2002 3:40 PM |
2RoN: Есть некоторые вещи которые удобно делать с помощью рекурсии. Я хочу точно знать: повисну я или нет если создам объект на стеке. Ответ: "возможно" меня не устраивает. А как задать размер стека при создании проекта или при создании нити мне еще лет 5 назад Петцольд рассказал :)
|
|
| Ефрейтор 4 Mar 2002 4:17 PM |
2PTO: А SDK и DDK - это Камасутра. |
|
| PTO - kruchkovkgb.ru 4 Mar 2002 4:25 PM |
2 Ефрейтор - нет, скорее букварь и учебник по арифметике |
|
| qwerty 4 Mar 2002 8:33 PM |
2PTO: не мучай новобранцев - это дедовщина. Сколько типов сортировки ты реально используешь. Один? Вот и считай один том Кнута уже не нужен. Получисленные алгоритмы? Случайные числа? Убери ещё один. Числа Фиббоначи? Списки помимо STL? Всё это хорошо только для кругозора. Машина Тьюринга тоже неплохо, но зачем? Это же не игра "Кто хочет стать миллионером". Другое дело если ты берёшь новобранца не на чёрную работу а проектом руководить. Тогда можно постебаться. Ты же груэчика не спрашиваешь, знает ли он про Архимеда. Да и старые книжки бывали тоже не очень хорошие. Если ты помнишь, была такая серия - коричневая обложка с двумя полосками, с отвратительным переводом. В одной книге были переведены даже слова while, if и прочее (в текстах программ). Кстати Вирт тоже был в этой серии. Его правда так не уделали. PTO ты только не обижайся, я не по злобе. Так, базар поддержать. |
|
| eXOR 5 Mar 2002 12:08 AM |
2 qwerty: Хмм... а смысл брать кодера, зная что он так кодером и отанется? |
|
| eXOR 5 Mar 2002 12:09 AM |
2 PTO: >Тут вот как-то был вопрос про Тезис Керча и машину >Тьюринга - что-то я не видел там массы ответов, все только > про тормоза ИЕ под Виндами... Скажи пожалуйста где это было... найти сейчас это дело невозможно, пока нет поиска... |
|
| RoN - rodionlenta.ru 5 Mar 2002 1:08 AM |
2 Ефрейтор: void f() { int x; try { f(); } catch(...) { printf("Fucking stack!\n"); } } |
|
| qwerty 5 Mar 2002 1:14 AM |
2 eXOR: Ты же не берёшь на работу токаря чтобы сделать из него директора. Это производство. Тебе для проекта нужны: гений - 1 шт; кодер - 10 шт. (цифра условная). Если ты сделаешь наоборот - 10 гениев передерутся, доказывая свою правоту. Как у Крылова - лебедь, рак и щука. Проект кончился - до свидания, если нового нет. Ты же не будешь кормить 11 человек только потому, что они знают алгоритм Дейкстры. И только так. Капитализм, однако. |
|
| Skull - sibskullmail.ru 5 Mar 2002 4:39 AM |
2PTO: когда-то веб-мастера считались специалистами. Сейчас большой спрос на "мексиканцев" - HTML-кодеров. Так и в программировании - 99% - это черная работа, где выигрывает тот кодер, который может вообще не читать Кнута, но помнит назубок API STL|MFC|QT. :) |
|
| Ефрейтор 5 Mar 2002 10:50 AM |
2 RoN: Увы! Не на всех компиляторах корректно работает :( Не надо путать C++ и Visual C. 2 PTO: Господин Билл Гейц по-моему тоже универ в свое время бросил. Правда единственная нормальная операционка это Windows 2000 SP2 (из серии Windows) 2 eXOR: >"а смысл брать кодера, зная что он так кодером и отанется?" Если он от тебя через пару лет сам не убежит. Да и в России (не в Москве) много людей, которых устраивает зарплата в $150. После появления Windows 95 многие FoxPro программеры остались без работы, а не стали активно C++ учить. Человечество в основной своей массе довольно консервативно.
|
|
| eXOR 5 Mar 2002 1:19 PM |
2 qwerty: Угу... вот у меня у одного знакомого... взяли исходя из этого принципа дедулю... который... имхо просто туп... результат - 1 гений (который по идее должен придумывать) занимается черной работой - буквально кодирует, 10 кодеров, прикидываются шлангами. Совок - с. |
|
| eXOR 5 Mar 2002 1:21 PM |
человеку, даже кодеру требуется некий минимум знаний для того чтобы: 1) Понять что от него хотят 2) Не браться за те задачи, которые решить невозможно 3) Не тратить рабочее время на изобретенние очередного велосипеда.
|
|
| RoN - rodionlenta.ru 5 Mar 2002 1:45 PM |
2 Ефрейтор: Ну, ещё можно через __try попробовать (SEH). Но, вот, не скажу сразу точно, будет ли тогда нормальная раскрутка стека. TFM говорит, что надо _resetstkoflw вызывать. В общем, одним словом - надо пробовать. Знать размер стека - мало что даёт, имхо. Ф-ии АПИ (по крайней мере те, что доступны для прикладнухи) используют, ведь, тот же стек, что и вызывающая ф-ия, т.ч. overflow может где угодно случиться. |
|
| Qrot 5 Mar 2002 2:48 PM |
2RoN & Ефрейтор: как дети малые, чесслово! да похеру на размер стека, он растет вообще говоря on demand, ну на крайняк исключение словишь. дядя Бъярн, ИМХО, не из-за этого не советовал объекты создавать указанным способом - а из-за небезепасности самой _alloca. |
|
| RoN - rodionlenta.ru 5 Mar 2002 4:18 PM |
2 Qrot: Не могу вспомнить, где Бьярн не советовал так делать, но это, в общем-то неважно :-) Мне показалось, просто, что вопрос т. Ефрейтора в том, как защитить критичную часть приложения от сбоев при переполнении стека. У меня самого особой нужды в _alloc() никогда и не было. Я про него узнал только когда в сырцах ATL 3.0 копался. Там он используется в conversion macros-ах. В ATL 7.0 уже вроде бы переделали как-то по другому. |
|
| Qrot 5 Mar 2002 4:37 PM |
2RoN: это товарищ Ефрейтор утверждали, что Страуструп твоих потугов расположить VCL-объект в стеке при помощи переопределения new не одобрил бы. прав он вообще то :) |
|
| PTO - kruchkovkgb.ru 5 Mar 2002 4:42 PM |
2 qwerty: да очем ты... какие обиды... но согласись лучше иметь программера который знает, что бывают разные алгоритмы сортировки и поиска, что можно доказывать правильность алгоритма и его реализации и вообще имеет немного теоритической подготовки выходящей за рамки первого курса института с фортраном и методом дихотомии... да и новобранцы у нас разные бывают, не все же кодеров одних брать, да практически уже и не берем их... дешевле оутсорсить тупой кодинг по готовым спекам 2 Skull: в программировании работы кодера 15% от силы... а по себестоимости и того меньше... а вот всем остальным, которые проект проектируют про теорию алгоритмов знать нужно и книжки Кнута прочитать не мешает... 2 Ефрейтор: бросил ибо открылась маза... он правда сейчас профессор пары университетов и академик пары академий... да и с теоритической подготовкой у него гораздо лучше всех нас вместе взятых... слышал я как-то рассказ про одно унутреннее обсуждение с Биллушкой вместе... народ был в шоке - не ожидали его полного понимания хардкорных теоритических выкладок по теории языков... народ торчал тогда 2 eXOR: 100% согласен - даже кодеру нужно что-то знать и чем больше у него багаж знаний и кругозор, тем лучше он делает свою работу, тем выгоднее такой работник. Если ко мне придут 2е кодеров при всех прочих равных работу получит тот, что знает кто такой Дейкстра, даже если он плохо помнит что за письмо он писал и кому оно было адресовано. |
|
| Skull - sibskullmail.ru 5 Mar 2002 5:34 PM |
2PTO: насколько я представляю, процесс проектирования напрямую касается не кодеров, а совершенно других людей. Хотя в крохотной компании - да, согласен. |
|
| RoN - rodionlenta.ru 5 Mar 2002 6:19 PM |
2 Qrot: Да это прикол ведь был про VCL. Переопределять new для _ТАКОГО_ использования мне бы в голову не пришло. Проще создать стековый объект класса. Но против перегрузки new ничего не имею. К примеру вот такой: class C { public: int veryLargeArrayOfData[/*охереть большой массив*/]; void* operator new(void* pv, size_t s) {return pv;} .... }; void f() { void *pv = malloc(sizeof(C)); int n = 1024*1024; while(n--) { C *pC = new(pv) C; pC->DoSomething(); pC->~C(); } free(pv); } :-)))
|
|
| PTO - kruchkovkgb.ru 5 Mar 2002 6:41 PM |
2 Skull: а я что-то не припомню, чтоб я говорил, что на беседах с новобранцами я занимаюсь наймом кодеров... приходится и с проктировщиками и с менеджерами проектов собеседования проходить... если аналитик не знает Кнута или не читал "Этюдов...", то ценность его может и не падает, но в глубине осадок остается... |
|
| qwerty 5 Mar 2002 7:23 PM |
2 eXOR 13:19: Да, совок нерушимый ... |
|
| Qrot 5 Mar 2002 7:24 PM |
2RoN: дя я знаю про что прикол, просто показалось, что вы как то очень серьезно к этому приколу подошли :) |
|
| glassy 6 Mar 2002 1:54 AM |
2РТО: повторюсь. В каждом выпуске программистов люди очень разные. И если 30% вообще обратили внимание на то, что им рассказывали на 2-м курсе, то это просто отлично. Дейкстру я читал по соотв. курсу, Кнута позже -- для собственного удовольствия, Вирта пока еще нет, насколько я помню, но расказать про него могу многое :) Страуструб был, еще про джаву что-то... "... кормление и уход" -- откуда, не вспомню... Единственно книги по прогр-ю вин32 -- имею отвращение, т.к. после 3-4 первых для себя уяснил, что ничего там путнего не будет, и все в gdi только и упирается. А насчет того, чем пользуюсь сейчас -- уже этим не занимаюсь, велосипеды не реализую. Просто юзаю удобные либы. И вообще, глубого фиолетово. |
|
| Skull - sibskullmail.ru 6 Mar 2002 4:17 AM |
2PTO: вот насчет проектировщиков и аналитиков - абсолютно согласен. :) |
|
| Ефрейтор 6 Mar 2002 8:56 AM |
2glassy: Путние книги по Win: 1. Петцольд "Программирование под Windows 95" 2. В свое время Диалог МИФИ издавало серию братьев Фроловых. Вот вроде и все. 2All: Господа, а спецы по VxD здесь не пробегали? Есть тупой вопрос: что-нибудь наподобие SetTimer в VxD есть? VMMCall Set_Global_Time_Out вызывается только один раз. Где я не прав? |
|
| Qrot 6 Mar 2002 9:54 AM |
2Ефрейтор: Русиновича забыл. и РИХТЕРА!!! |
|
| PTO - kruchkovkgb.ru 6 Mar 2002 12:36 PM |
2 glassy: Многое из Вирта люди обычно читают в школе... в институте они читают сначала Кнута для самообразования, а уже потом Дейкстру и прочих классиков... По тому как вы рассказываете о своих опытах программирования под Винды четко видно, что Петцольда вы не читали... при рассказах о архитектуре видно, что Хелен Кастлер свою книгу не для вас писала, а Рихтер с Руссиновичем тоже мимо вас прошли. Если человек претендует на то, чтобы называться программером и делать нечто большее чем пару формочек для забивания данных в фирме Рога и Копыта он должен многое знать... Заниматься писательством не прочитав Пушкина и Толстого ИМХО пустая трата времени... |
|
| Ефрейтор 6 Mar 2002 12:56 PM |
2 PTO: 90% кода и времени обычно посвещается борьбе с интерфейсом. Без www.codeguru.com обычно кроме текстового редактора ничего не получается. Или я не прав? |
|
| Qrot 6 Mar 2002 1:10 PM |
2Ефрейтор: ИМХО, не прав. скорее наоборот. а кодегуру - это отстойник изобретателей велосипедов. |
|
| qwerty 6 Mar 2002 2:06 PM |
2PTO: настоящими программистами не рождаются - настоящими программистами умирают. Следствие: хороший программист - мертвый программист. |
|
| PTO - kruchkovkgb.ru 6 Mar 2002 3:15 PM |
2 qwerty: на лицо плахая подготовка в области формальной логике... следствие плохого образования :) |
|
| qwerty 6 Mar 2002 5:24 PM |
2 PTO: Но даже с таким лицом я могу скорчить false и true. |
|
| PTO - kruchkovkgb.ru 6 Mar 2002 5:26 PM |
2 qwerty: а как на счет Null? ;-) |
|
| qwerty 6 Mar 2002 5:51 PM |
2 PTO: это обычное состояние |
|
| eXOR 6 Mar 2002 9:30 PM |
Блин... ну чего вам всем не спится? Я бы с таким удовольствием лег поспать часов на 90. |
|
| Skull - sibskullmail.ru 7 Mar 2002 4:58 AM |
2PTO: Рихтер крут! Только я так и не смог использовать показанные им примеры для показа размера процессаю :))) |
|
| Qrot 7 Mar 2002 9:46 AM |
руки, Skull, руки... |
|
| glassy 8 Mar 2002 1:53 AM |
2РТО: пару формочек для забивания данных Ок. Я не программировал под vga256, под винды и не вникал в ядро линукса. Какой смысл мне это делать? Тут мысля в рассылке проскочила, что, дескать, с моей либой можно и "мой кад" с флэшеподобным интерфейсом сделать. Вот где у меня головняки. Анимировать панель меню или нет, например. |
|
| Skull - sibskullmail.ru 11 Mar 2002 4:42 AM |
2Qrot: может, и руки. Только из ненавистного MSDN все примеры быстро компиляются и работают, а вот из Рихтера именно этот пример - нет. Видать, тенденция... |
|
| Ефрейтор 11 Mar 2002 9:01 AM |
2 Skull: Отмечу, что под VC 4.0 некоторые примеры из Samples по разному работали под NT и Win-95 :) |
|
| Skull - sibskullmail.ru 11 Mar 2002 9:47 AM |
2Ефрейтор: да уж на несовместимость и 120-ую ошибку я вдоволь насмотрелся... |
|
| Qrot 11 Mar 2002 9:50 AM |
руки, Skull, руки... |
|
| Skull - sibskullmail.ru 12 Mar 2002 4:25 AM |
2Qrot: тогда непонятно, а чего же 99% исходников программ под Linux работают? :) |
|
| Qrot 12 Mar 2002 10:23 AM |
2Skull: что у тебя работает - "хелло, ворлд!" на консоль пишется? :) под линукс вообще ничего не работает - перманентная бета. |
|
| DemonZla 12 Mar 2002 3:17 PM |
2Qrot: Странно, и как это он сам работает... Линукс ентот... :) И проги под него тожа какимто чернокнижным образом работают нормально... :) Да ещё блин успевает великий микрософт теснить... ужасть прям... правда? :) Колдовство не иначе :) |
|
| Qrot 12 Mar 2002 3:32 PM |
2DemonZla: потеснить, гришь, микрософт, гришь, успевает? и хде ж это? пока только коммерческие юниксы и теснит проги, гришь, работают, гришь, нормально? вон поди про zlib почитай, рядышком тута
|
|
| Bravo 12 Mar 2002 6:48 PM |
А теперь по статье. Чувак подводит мысль - мол ассемблер то ограничен, а все эти VB, C++, Java - суть оболочки, которые никак уже ограниченность ассемблера преодолеть не могут. Каково?! |
|
| eXOR 12 Mar 2002 7:36 PM |
2 Bravo: Ну каково? - Браво ;-) 2 Qrot: Успевает - успевает. А все потому, что M$ - гогно ;-). |
|
| Qrot 12 Mar 2002 7:50 PM |
2eXOR: а ты дискетки все-таки сделай :)) |
|
| eXOR 12 Mar 2002 8:12 PM |
2 Qrot: Зачем? У меня диск загрузочный... |
|
| Qrot 13 Mar 2002 12:10 AM |
2eXOR: да по TFM вроде бы надоть дискетки... впрочем дело твое |
|
| eXOR 13 Mar 2002 1:00 AM |
2 Qrot: Да ну ее нафиг. Не буду ничего делать. Вообще пойду сначала по бабам, потом по кабакам, а потом спать нафиг лягу. Вот. |
|
| glassy 15 Mar 2002 3:00 AM |
2РТО: #define 0 не видел? :) stddef.h :) gcc рулит :) 2Qrot: когда у тебя инет не через dial-up, то линукс показывает себя с хорошей стороны. Я бы даже сказал -- с самой красивой :) cvs.exe sucks (sucks, я говорю!!!) |
|
| Qrot 16 Mar 2002 2:47 PM |
2glassy: линуксь суксь. всегда. недавно в одной рассыкле видел такую подптсь: Windowze: Я знаю, куда мы пойдем сегодня Linuks: Я знаю, куда мы пойдем завтра FreeBSD: Эй, парни, вы идете? |
|
| Skull - sibskullmail.ru 22 Mar 2002 5:49 AM |
2Qrot: хм. Ладно про Windows - согласен. Но где поддержка крупными производителями BSD? Когда клиент Novell или Oracle или Lotus Notes выйдет под Фряху? То-то! :) |
|
| Ation 4 Aug 2004 3:00 PM |
Заочное спасибо 2 glassy. Посмотрю че за Дейстр такой. 2 Ron - забудь про С, коль юзешь С++ malloc с классами не очень дружит... |
|
|