Oct 08

В продолжение предыдущего поста хочется немного пофилософствовать. На дворе 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. Хочу спросить тех, кто старше - раньше было также или лучше? Или, может я сгущаю краски?…

written by FX Poster

Oct 08

Наконец-то дочитал Design Patterns. Читал долго. То времени не было, то не до этого было. Но все это уже в прошлом. И пришло время рассказать о книге тем, кто её еще не читал.

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

Если вы не знаете что такое ООП, либо просто не сталкивались с ним никогда на практике эта книга подходит как никогда. В отличии от OOA&D Гради Буча, авторы не заваливают читателя терминами, но некоторое представление о том, что мы хотим получить и какими общими способами будем пользоваться, она дает. После прочтения вводной главы (основы ООП) и главы, в которой проектируется реальное приложение (текстовый редактор), - понимаешь, в чем, собственно, суть ООП и начинаешь знакомится с некоторыми паттернами. Что такое паттерн? Общее определение таково - “Паттерн - это описание взаимодействия обьектов и классов, адаптированных для решения общей задачи проектирования в конкретном контексте”. Хотите подробнее - читайте книгу.

Во второй (по логике, а не по главам :) ) и самой большой части книги находится справочник, в котором приведены и разобраны до мельчайших подробностей сами паттерны. Авторы сами предполагают, что книга будет использоваться именно в качестве справочника по паттернам и во многом они правы - какой именно паттерн использовать в конкретной ситуации вам может подсказать лишь подробное чтение всего про подходящии вам паттерны, взвешивашия всех “за” и “против”. Т.е. будьте готовы, что после чтения книги вы к ней не раз еще вернетесь. Не спешите ставить её куда-нибудь далеко, пусть лучше она будет где-нибудь на виду и напоминать о себе - хороший и легко сопровождаемый код должен быть везде! :)

Приятного чтения! ;)

written by FX Poster \\ tags:

Oct 06

Не могу не отметить статью из октябрьского номера MSDN Magazine про “Оптимизацию управляемого кода для многоядерных компьютеров”. В статье рассказывается о библиотеке TPL, которая позволяет использовать все преимущества многоядерности практически без изменений исходных кодов (по сравнению с переписыванием кода с использованием Thread’ов - здесь изменения в коде потребуются лишь чисто косметические).

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

PS. В “более далеком” будущем, как мне кажется, эта библиотека перекочует в компилятор, который сам будет решать - нужно ли распараллеливать текущий код или нет.

PPS. Интересно, уйдут ли Thread’ы в небытие? :)

written by FX Poster \\ tags: ,

Oct 06

Вот и все, и больше мне пока что ничего не нужно! :)

written by FX Poster \\ tags: , , ,

Oct 04

Посмотрел вот только что первый сезон этого сериала (в русском варианте - “Компьютерщики”). Это просто жесть! Всем кто хоть немного связан с темой IT - смотреть обязательно!

PS. Особенно ржал в 4-й серии с чудилы, любящего Cradle Of Filth - его “double flash” и рассказы про Cradle Of Filth и похороны меня просто убили!

written by FX Poster \\ tags: ,

Oct 03

Достаточно интересный факт - MS открывает исходники многих библиотек .NET фреймворка, в частности .NET Base Class Libraries (System, System.IO, System.Collections, System.Configuration, System.Threading, System.Net, System.Security, System.Runtime, System.Text, etc), ASP.NET (System.Web), Windows Forms (System.Windows.Forms), ADO.NET (System.Data), XML (System.Xml), and WPF (System.Windows). В дальнейшем планируется открытие и остальных библиотек.

В чем основные плюсы этого решения для .NET-программистов:

  • Изучение исходников фреймворка, учиться ведь всегда полезно :)
  • Возможность использования исходников при отладке своего приложения в VS 2008:

Теперь о подводных камнях - код открыт по лицензии Microsoft Reference License (MS-RL), которая подразумевает возможность только просмотра кода, перекомпиляция или изменение этих кодов по лицензии строго-настрого запрещены. То есть на развитие того же Mono Project это решение фирмы MS никак не повлияет, а жаль - очень бы хотелось, чтобы Mono был реальным аналогом того .NET’а, которым нас балует MS.

И вдогонку - на днях наткнулся на очень хорошую статью по нововведениям в C# 3.0, которая меня очень порадовала - в отличии от Java, C# не стоит на месте, а развивается. В Java в основном меняется библиотека стандартная, в случае же C# + .NET Framework меняются обе составляющие: язык становится более удобным (как по мне - гораздо более удобным, мне Linq ну просто очень понравился), а .NET Framework обрастает новыми функциями.

written by FX Poster \\ tags: , , ,