В продолжение предыдущего поста хочется немного пофилософствовать. На дворе 2007-й год, прошло уже 13 лет с момента издания этой книги (имеется ввиду именно англоязычная версия), а примеры, из которых эта книга родилась появились еще в далеких 80-х. А теперь посмотрите вокруг себя - много ли вы видите людей, которые действительно хорошо знают OOP, OOD и OOA? Большинство программистов как писали в процедурном стиле, так и пишут. Некоторые, судя по их кодам, патаются перейти к ООП, но у них ничего не получается, в итоге код получается хуже, чем если бы они писали в своем любимом процедурном стиле. Да, процедурная методология не плоха, но ее время ушло. Да, я считаю, что не уходит, а именно ушло! ООП дает все то же, и добавляет еще больше. Почему этим не пользоваться - для меня это до сих пор остается загадкой.
Торможению развития ООП способствует (по крайней мере у нас на Украине) образование на IT-специальностях. Я сейчас учусь на 3-м курсе, на программиста, и нам только в этом семестре начали рассказывать про ООП - хорошо еще, что препод классный - хорошо шарит в предмете и понятно обьясняет его. А большая часть преподов застряла в далеком прошлом и ни о чем новом слышать даже не хочет. Нам даже АТД (абстрактные типы данных) нормально не рассказали, а на программы препода, который нам их рассказывал просто страшно было смотреть (мне одну и программ пришлось переводить из паскаля в c++ - в итоге пришлось перевести чуть ли не 1 в 1, потому что там по дургому пришлось бы переписывать все, что я, кстати, через пару недель после того, как отдал преподу этот “перевод”, и сделал). А сейчас нам еще Java читают… Препод в яве шарит меньше чем я, хотя я по ней читал наверное, штук 10 статей за всю жизнь. Ну что тут еще скажешь… Какое нахер ООП - хоть как-то программировать научиться хотя-бы.
О проектировании вообще стыдно говорить - вот, статейку почитайте про проектирование программ под Web, полезно будет. Вот скажите, делаете ли вы тестирование своих программ? А если делаете - стали бы вы делать его, если бы вам не сказали этого делать на фирмах, где вы работаете? (Если не угадал - приношу извинения.)
Да и ко всему прочему - я не знаю, как было раньше, меня тогда вообще не было еще, но сейчас я вижу (могу судить по друзьям, знакомым, просто форумам), что программисты превратились (опять же - может так и раньше было) из хорошо разбирающихся в IT-мире людей в непонятно кого. Меня одногрупник-программист вот просит приехать переставить Windows. Сегодня, после моего двухнедельного отнекивания (каюсь я, каюсь) он попробовал переставить сам. В итоге у него там вышел какой-то бок, что инсталляха отказывалась форматировать диск C и, соответстсвенно, ставиться на него нормально. Прийдется все-таки поехать… Со своим LiveCD Ubuntu. :) Другие одногрупники также не блещут красотой своих программ, до сих пор не научились (за два года-то) читать доки на английском, не знают ровным счетом ничего в ООП и радуются тому, что они разбираются в C++ Builder 6.0 лучше меня. Молодцы - мышкой на формочках поклацать - это как-то не для меня, я консоль люблю больше (про web-программирование пока что забудем). Многие учаться лишь бы получить корочку… Нахрена только им на программистов было идти… Форумы пестрят вопросами типа: “а у меня #include <iostream> не работает” - я, правда, не знаю, как такого можно добиться, но факт остается фактом. И таких примеров - множество…
Вот смотрю на то, что написал и думаю - неужели все дествительно так плохо. Начинал писать этот пост с совершненно другими намереньями (почему ООП не юзают повсеместно), а получилось совсем другое. Зато будет над чем подумать на досуге.
И напоследок очень хочется повторить чью-то очень хорошую фразу: “умный - не тот, кто много знает, умный - тот, кто стремится узнать еще больше” (стилистика нифига не сохранена, но суть передана правильно :) ).
PS. Я не говорю, что все программисты такие, как я описывал выше.
PPS. Да, я тоже программист. Да, я тоже дохера всего не знаю и многое делаю плохо. Да, можете считать, что я ничем не лучше вас. Время покажет.
PPPS. Хочу спросить тех, кто старше - раньше было также или лучше? Или, может я сгущаю краски?…





October 8th, 2007 at 10:02
Я учился с 1997-го по 2003-й. Всё было так же. Препод по С++ лет 70. Обещали много чего, не научили ничему (Access, Delphi не считаем). Всё так же приходилось изучать самому. Вечерами-ночами :)
October 8th, 2007 at 11:11
Ты не одинок :( Я на пятомкурсе в Молдавии учусь на программиста. Все то же самое.
October 8th, 2007 at 14:44
FX Poster, не расстраивайся =) Я тоже разорялся на эту тему когда учился… но все прошло и теперь вспоминаю с улыбкой эти времена. =)
Дело в том, что большинство вузов учит кодить, а не программировать. Многие преподы даже не видят разницы между кодером и программистом. На таких баранов не стоит смотреть - нервные клетки не восстанавливаются =))) Стоит читать достойные книги и учиться самому. Если сам учиться не будешь, никто научить не сможет.
А мега-программистов кликающих мышкой хватало всегда =)
October 8th, 2007 at 15:02
Ну вот у меня интерес к программированию пошел именно после “кликанья мышкой”. Всё-таки первый толчок очень важен. Но еще важнее не зацикливаться, а развиваться.
October 9th, 2007 at 08:39
А я сейчас читаю книгу “Рефакторинг” там соавтор с книги по патернам, в ООП пока разобраться особо не получилось, но вот в этой книге уже более понятно что к чему. Трудиться надо :( Но почему-то за свой счет.
По поводу обучения, это да :) Например на физ-техе я так и не научился тому что должен знать и понимать готовый специалист по радиоэлектронике. Как говорили молодой инженер требует 5 лет доводки на практике. Посмотрим каким прогером или кодером стану за 5 лет работы… :)
А автору успехов, и не заморачивайся сейчас на преподах и тп, смотри шире. На англоязычных форумах чатах тоже бывают ламеры такие вопросы обсуждают что смотришь на это в шоке. Но , в Украине, программирование отстало очень сильно.
October 9th, 2007 at 18:51
Согласен с автором. Я работаю в одной веб студии, так никто там слыхом не слыхивал о паттернах, а ООП используют так что ничем хорошим от процедурного программирования не отличаеться.
October 10th, 2007 at 08:43
Мне больше повезло, и патерны и ООП используют. И меня заставляют. Если б ещё нормально с шаблонами было, а то юзаем php шаблоны.
October 10th, 2007 at 11:29
vtx, php-шаблоны, как раз и есть нормальные шаблоны. =))) Поверь мне ) Все остальное обман, ты же программист! Шаблонизаторы созданы для дизайнеров, которые не разбираются в программировании, зачем же уподобляться им?
October 11th, 2007 at 00:52
А неплохо написал. Я думаю примерно то же самое.
Но есть и другая сторона вопроса. Нормальные компании таких горе-кодеров сразу отсеивают.
Поэтому пока противно, а потом будет жалко от наших вузов вместе с преподами.
P.S. Шаблоны в С++ рулят и не волнует :)
P.P.S. процедурное программирование имеет свои ниши. Но их, да, осталось очень немного.
October 11th, 2007 at 17:04
Правильный найтив пхп с использованием хелперов это конечно рулез, а когда ребята написали свой шаблонизатор который ровным счетом не умеет ничего. А по скорости только медленее, да еще и переменные запихиваются через 1 массив, что просто ужасно. Я как пришел сразу тревогу забил, услышали только спустя 2 месяца, прикрутили смарти.
October 11th, 2007 at 18:24
Arhivator, а может он им не нужен был, этот Smarty. Я со Smarty проработал почти 3 года… а на прошлой неделе, удалил его на хрен, и написал за 15 минут “свой шаблонизатор который ровным счетом не умеет ничего” =))) Но работает он в 2-3 раза быстрее Smarty. Так, что иногда нужно выбирать…
А вообще Smarty все таки уродливый монстр и если ты и программист и верстальщик в одном лице, то Smarty тебе не нужен! Это факт.
October 11th, 2007 at 19:07
JackYF
Нормальные компании таких горе-кодеров сразу отсеивают.
Хрен там. К сожалению в крупных компаниях ситуация в основном не лучше чем в мелких. И практически нифига не шарящий человек вполне может быть принят на работу, так как спрос на программеров очень высокий.
Да, спор тут не про C++’ные шаблоны. :)
October 11th, 2007 at 19:11
Arhivator
Так и использую native php + widghets (определенный блок контента с логикой if foreach и тп, который нехотелось выносить в отдельный блок html) + helpers (маленький кусок html типа ссылки опред вида, форматирования даты и тп). Нормально? Ну и конечно модель представление контроллер…
October 11th, 2007 at 19:13
“Smarty все таки уродливый монстр”
Мдя… кто это вам такое внушил-то?
Неужели вы за 3 года не научились его правильно готовить?!
Как он может быть медленней, если шаблон не парсится каждый раз? Вы открывали когда-нибудь скомпилированные темплейты?
October 11th, 2007 at 21:27
Sam,
на это я вам уже ответил вот здесь: http://larin.in/archives/16#comment-46
Скажу только, что я на реальном примере и реальных данных, опытным путем доказал, что Smarty в 2-3 раза тормознутее php-шаблонов.
October 12th, 2007 at 07:12
Я прям себя узнал=))
October 13th, 2007 at 12:01
Спасибо на добром слове.
Оказывается, есть куда падать моей самооценке…
Не думал, что таким поэтическим даром обладаешь.
А в целом ты прав. University succs.
Достало.
October 17th, 2007 at 20:20
Тебе повезло - тебе, в отличие от меня, не читали 2 семестра FORTRAN и 1 семестр — BASIC :-) Учился в 1992-1997 гг., преподы по программированию — на 90% читали заученные старые конспекты.
October 17th, 2007 at 20:22
Но, кстати, преподы не важны для тебя. “Твоё - это то, что ты сам прополз на брюхе, остальное - ветер: послушал и забыл” (с) не мой — кто-то из преподов сказал.
October 17th, 2007 at 20:23
ага, препод прав был 100%. :)
October 17th, 2007 at 23:53
> процедурная методология не плоха, но ее время ушло.
> Да, я считаю, что не уходит, а именно ушло!
Уйдет оно тогда, когда все станут использовать ООП. А такого не случится никогда. Почему? Да потому, что объекты существуют только в голове. В реальном мире все вещи и предметы - какие есть, все разные. А мозги уже пытаются подогнать объектную модель под питбулей и пуделей - которые мол оба - собаки. Но ведут-то они себя конкретно по-разному! Это конечно не значит, что их нельзя запихать в объектную модель. Просто модель эту придется сильно усложнять. Отсюда и неприязнь к ООП у людей, мыслящих процедурно: питбуль - ховайся! пудель - можно погладить, овчарка - по ходу дела поглядим.
Объектно-ориентированные языки заставляют мыслить классами. Это такой способ думать. Но он не единственный, а для некоторых задач IMHO не самый эффективный. Так что похороны процедурного подхода несколько преждевременны
October 18th, 2007 at 09:19
Собственно, похороны уже давно произошли. Просто учебный процесс все никак не может с этим смирится. ;)
October 18th, 2007 at 23:55
Собственно, похороны уже давно произошли.
Скажи об этом разработчикам ядра Линукс.
Учебный процесс имеет гораздо более серьёзный недостаток - зашоренность преподов и частая абсурдность программ обучения IT-технологиям.
October 19th, 2007 at 01:30
Хехе. Я исходники линуха не видел и смотреть не хочу. Давно было принято решение не юзать C++, а юзать C - я полностью его поддерживаю. Но это не отрицает того, что ядро Linux написано чисто в процедурном стиле. Посмотри хотя бы на GTK, которая написана на C, но тем не менее “является объектно-ориентированным” (c) Wikipedia.