Сегодня хотел сделать простенькую фишку. Прожка рисовала у себя на форме всякие вещи, опционально это должно было сохранятся в Jpeg. Но вот с последним я оббежал такую тучу сайтов что просто ужас. Если не реализовывать самому и не таскать с собой дллку, сделанную в каком нибудь билдере или чём то подобном - выход один GDI+. Стал читать статью по этому нечто.... навороченная классовая структура постоянные подвижки в сторону .net и прочее. Нет я понимаю что GDI в том виде в котором он есть давно устарел и ему нужна замена, но это.... Не уж то нельзя было спроектировать dll так что бы не приходилось экспортировать классы, чтобы это было совместимо со всем что может подгрузить длл и вызвать getprocaddress, без попыток получить доступ к гландам через задний проход. И тут собственно основная мысль. Я наблюдаю за тем как год от года всё сильнее жмут компании двигающие вперёд ООП разработки. Инкапсуляция в большинстве случаев - читай непредсказуемое поведение, наследование -узаконенное воровство. Не уж то это будующее и без этого никак? Не уж то без этого уже скоро будет не спроектировать интерфейс? Большинство людей уже и не помышляет писать ни на чём другом кроме java и .net (ну разве что те кто с них пересесть на ruby), как и большинство компаний теперь ищет именно таких людей. Монстроидальные проекты которые тормозят даже на новых компах, бесконечное множество условностей и абстракций, не уж то за этим будующее? Судя по описанию последнего ддк эта зараза прокралась уже даже в драйвера. Такое впечатление что весь мир сошёл с ума. Человек закончив 2 курса вуза спешит скорее пойти работать и неприменно на вот этом. Половина людей гордо зовущие себя программистами не осилят без книжки написать qsort.... и так далее... Вопрос собственно в том, каким вы видите будующее? Если в нём место программисту C\ASM(или они останутся только на микроконтроллерах)?
Lord_De_Seis Ну так фундаментальная подготовка денег и времени стоит, а так -- подготовил "специалиста" и отправил его работать. А потом удивляются, что спутники летят не туда, куда надо, оси виснут, компиляторы неверный код генерят, и всё это жрёт немеряно памяти и работает со скоростью черепахи...
Lord_De_Seis, на заметку: "будущее", "неужто". а то пока прям уши режет а по сабжу, ну что ты хотел, на то он и прогресс, где на все есть свое разработанное решение. чуток подправить под свои нужды - и вуаля, результат достигнут. ну, меня это тоже не полностью радует.
Lord_De_Seis Ну если ООП мишура напрягает, то можно копать в сторону GDI+ Flat API, вроде пока функции экспортируются. http://msdn2.microsoft.com/en-us/library/ms533969.aspx
Скоро В.Пупкин "Hello World" напишет на полгига, а люди будут удивляться, что прога маленькая получилась, т.к. уних такая же прога компилится в 2 гига. Когда-нибудь рухнет небоскрёб построенный из уровней абстракции, а если не рухнет то террористы ему помогут.
) я прям вижу кадры из нового голливудского блокбастера: шайка дзенщеков-лоулевел_кодеров во главе с matich под покровом ночи, обвязанные гранатами, ползут к неподступным миллионоэтажным небоскребам ООП, дабы раз и на всегда сокрушить империю проклятого ООП-злодея, заграбаставшего в свои поганые лапы некогда цветущие края великих Низкоуровневых Земель... и да пребудет с ними Сила!!!
Я сам не очень люблю всякие фреймворки типа NET или JVM (может быть, потому что пишу на C/C++ ), но логика подсказывает: да, за ними будущее, и вот почему. Когда-то люди писали только на ассемблере или в машинных кодах. Думаю, что когла появились языки "среднего" уровня (структурное программирование, всякие фортраны и т.п.) , настоящие низкоуровневые программисты тоже отнеслись к ним с пренебрежением. Ведь компиляторы генерили _неоптимальный_ код! А многих вещей вообще нельзя было сделать! Самомодифицирующийся код и всякие такие штучки... Языки среднего уровня, предоставляя новый уровень абстракции, делали это не бесплатно: отнимали часть возможностей и делали код несколько неоптимальным. Примерно то же произошло в написании игр. Изначально игрушки писались исключительно на _своих_ движках, которые были до предела оптимизированы и в обязательном порядке работали с регистрами видеокарт и т.п. Когда появился первый DirectX, на него серьезно никто не смотрел и все равно писали под DOS. Но прошло время, и теперь игрушки пишут ТОЛЬКО под DirectX или OpenGL. Никому даже в голову не идет мысль написать что-то, работающее с портами видеокарты! Потеряли ли мы какую-то производительность, отказавшись от прямой работы с железом? Думаю, да. Но зато был получен новый уровень абстракции и унификация, которой было бы не достичь, учитывая современные возможности видеокарт. Современные программы взаимодействуют СО ВСЕМИ устройствами опосредованно: с диском - через API файловой системы, с видео - через GDI или DirectX, с аудио - например через DirectSound, с принтерами через тот же GDI, с клавиатурой и мышью - через систему сообщений операционки. Остался только процессор и оперативная память. Вдумайтесь: сейчас это единственные компоненты компьютера, с которыми софт взаимодействует напрямую! Так что фреймворки и виртуальные машины - неизбежность, диктуемая вовсе не ООП, а какими-то другими, неизвестными мне законами развития технологий: фреймворки - это аналог DirectX'а, только вместо видеокарты и видеопамяти здесь процессор и оперативка.
Да лехко... Код (Text): ;tasm32 /ml /m2 512.asm ;link *.obj /subsystem:console /entry:start msvcrt.lib .386P .model flat extrn _printf :proc .code public _start _start: push offset msg db 536870912 dup (90h) call _printf pop eax retn msg db 'bugaga! :)' end _start
JVM и .NET отбирают процессор как устройство, и оперативная память контролируется всё тем же процессором.
Ну да, я это и имею в виду Фреймворки - это последняя стадия виртуализации, в результате которой прикладной софт ОКОНЧАТЕЛЬНО отделяется от железа. Внутри, на системном уровне, все осталось как было: все те же порты ввода/вывода
Почему ассемблер никогда и не умрёт: всё равно необходимо время от времени делать низкоуровневые вещи.
Lord_De_Seis на самом деле, так и должно быть: в работе и только в ней человек может узнать уровень своих знаний и что нужно для дальнейшего развития - вот обратная ситуация действительно страшная. постоянная практика хорошо это лечит, да, и вообще, стоит разделять справочные знания и базовые SII на самом деле в России ситуация по-другому выглядит: у нас много вузов, где нули готовят нулей; на преподов науч. звания падают, как манна небесная, а вот как на кафедре толком ничего не делающей такое чудо происходит догадаться просто (впрочем, не везде такое безобразие). по определению все с супер подготовкой быть не могут - поэтому существует градация уч. заведений по уровню подготовки. >>>> фундаментальная подготовка денег и времени стоит а вот этот момент стоит выделить - эконом. невыгодно обучать человека тому, что он использовать не будет.
UbIvItS Понятное дело, что "суперов" сравнительно немного. И совершенно согласен с тем, что только на практике человек действительно может стать специалистом. Однако когда недоучку выдают за нормально подготовленного специалиста -- это не есть хорошо. Фактически проблема в том, что для программиста считается достаточным научиться кодировать на каком-то языке, при этом не требуется понимания ни глубинных основ работы ЭВМ и ОС (абстрагирование от аппаратуры, однако ), ни умения анализировать задачу на сколько-нибудь заметную глубину. Отсюда и реализация первой пришедшей в голову идеи, и неспособность оценить эффективность того или иного решения, и т.д. и т.п. Конечно, "специалисты" подобного уровня находят свой спрос, но очень плохо, что основная масса становится таковой.
SII ты излишне идеализируешь требования - глубинные основы ЭВМ (точней их знания) требуются тогда, когда нужна глубокая оптимизация кода - в свою очередь, эта оптимизация не всегда эконом. обоснована: самый яркий пример - распред. вычисления. гораздо быстрей сделать клиент на ява и он будет пахать вне зависимости от проца и оси, чем строкать клиента на асме. и вообще, попытка какой - либо фирмы выводить на рынок идеальный софт приведёт к её развалу, т. к. проект будет дороже и дольше, а конкуренты будут выбрасывать на рынок более глючный, медленный и раздутый софт, но на них будет работать ситуация: "дорога ложка к обеду". к тому же, юзер- гомосапиенс неблагодарный, т. ч. делать идеал - это прямая дорога: работать много, а получать мало. это вполне законамерно, другой вопрос, что благодаря взяткам в вузы приходят учиться нули; нормальные преподы, помнящие такое слово как совесть, уходят на другую работу, а новые спецы защищают купленные дипл. работы у своих гуру преподов, на кои без слёз не нарадуешься - в нормальных заведениях это, дай бог, если за лабу прокатит - вот отсюда и выходит, что дипломы Российских вузов в своём большинстве ценяться ниже туалетной бумаги - ей хоть подтереться можно)
UbIvItS Ну, не сказал бы, что идеализирую требования... Ведь дело не только в том, нужны ли конкретные знания на практике, а в том, что это расширяет кругозор, так сказать. Возьмём ту же математику: 95% того, что учат в вузах, ни разу в жизни не потребуется 95% выпускников этих самых вузов, однако изучение математики "дрессирует мозги", упорядочивает мышление и т.д. и т.п. -- а без этого хорошего программиста быть не может. Что же касается оптимизации, и в частности, тех же распределённых вычислений, то тут бабушка надвое сказала. Во многих случаях действительно проще написать жаба-клиент, и фиг с ней, с эффективностью (тем более что JVM не так уж хреново работает, судя по отзывам, что я слышал). Но есть и такие задачи, где производительность превыше всего, а выполняться которым приходится на машинах с однотипными процессорами. В таком случае может быть оправданной и разработка части кода на ассемблере (всё писать смысла нет -- правило 90%-10%, думаю, хорошо известно ).
SII обычно обширный кругозор означает низкий уровень знаний по каждому разделу в отдельности - другой вопрос, если человек гений, тогда он может поддерживать достойную глубину знаний по большому кол-ву направлений. и вообще, я за то, чтобы учить человека получать знания самостоятельно, а не набивать его как жвачное овсом. сие подходит для локалки, а для распреда в инете только ява или аналоги.
угу.. еще скажи што песал под это гамно, и вышло просто, и буков пришлось писать мало)))) Ну тут смотря на чем настоять. Не все же такое быдло