среда, июня 13, 2007

Система, которая умеет все

 

Наступает горячая пора защиты дипломов. Вот такой крик души на форуме RSDN (стиль и орфография оригинала сохранены; обратите внимание на дату, и как она соотностися с message :) 

Помагите написать систему для предприятия на c#

12.06.07 19:57

я хочу написать систему для нашего предпиятия на c# с использованием .net
эта система должна уметь делать всё, что нужно на нашеи предприятии НО и с возможностью расширения возможностей на будущее.
подскажите что почитать, или сылку желательно где есть код примера.
заранее большое спасибо!

Блин, ну "помагите" бедному студенту, а то накроется и диплом и их "предприятия".

Прямая ссылка для взносов  пожертвований, в виде примеров кода:  Помагите написать систему для предприятия на c#

суббота, июня 09, 2007

Титаны

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

P.S. Забавно и немного грустно, читая о карьере этих парней, примерять прочитанное на себя :) 

вторник, июня 05, 2007

Парадоксы Microsoft Visual Studio

Microsoft компания очень большая. Наверное только этим фактом можно объяснить то, что практически одновременно у меня на ленте появились две новости просто диаметрально противоположной направленности, обе о Visual Studio.
Первая в блоге Елены Макурочкиной - Microsoft против TestDriven.Net. Microsoft не нравится то, что свободно распространяемый плагин TestDriven.Net позволяет подключить возможности unit тестирования к Express версии Visual Studio (тоже, кстати бесплатной), из которой оные возможности специально были удалены.
Вторая новость в блоге Виктора Шатохина посвящена анонсу выхода Visual Studio 2008 Shell.
"If you create software development tools, you’ll want to consider building on the Visual Studio 2008 Shell. A streamlined Visual Studio development environment, the Visual Studio Shell provides the core foundation so you can focus on building your application’s unique features. Flexible customization options help you deliver optimized experiences for specific markets."

То есть, если вы делаете инструментарий разработчика, то обязательно должны обратить внимание на Visual Studio Shell - это именно то, что доктор прописал. Причем использование ее будет royalty-free.
Вот так вот.
Видимо, чтобы разрешить потенциальные конфликты, подобные тому что произшел с TestDriven.Net VS Shell можно будет использовать в двух режимах integrated и isolated. В integrated режиме ваш плагин интегрируется в одну из коммерческих версий VS (подобно TestDriven.Net). В isolated вы можете использовать VS Shell для создания полностью независимого инструмента разработки.
На самом деле, многие хотели бы выпускать свои средства разработки основанные на VS, либо включить такие средства в состав своих продуктов. Но распространять бесплатно их нельзя из-за лицензионной политики Microsoft, а продавать бесперспективно, опять же по той же самой причине. Создание VS Shell направлено на то чтобы решить эту проблему. А вот на что направлена тяжба с создателем TestDriven.Net, мне совсем не понятно.

Настоящий программист

«А вообще я много раз говорил — настоящему программисту все равно, на каком языке писать, под какую платформу или кросс-платформенно и какие технологии использовать»

Настоящий Программист.

«Я процесс написания на Java и C# считаю простым и не интересным... Мне больше C/C++ нравится»

Настоящий Программист.

Настоящий программист - это не реальный человек, хотя цитаты эпиграфа принадлежат вполне реальным людям. Дело тут даже не в том, что эпоха «настоящих программистов» давно прошла. Дело в том, что сегодня «настоящий программист» стал социальным феноменом в среде IT, этаким фантомом, который вызывает головную боль у менеджеров, и различные комплексы, от мании величия, до комплекса неполноценности у реальных, практикующих программистов.

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

В те далекие времена компьютеры были большими, а все программисты были «настоящими». Их работой было построение алгоритма решения поставленной задачи и описание этого алгоритма в доступной для машины форме. Задача – программист – машина и ничего более. По правде сказать, «настоящему программисту» для счастливой жизни ничего более и не нужно. Одна деталь омрачала эту пасторальную, идиллическую картину. Дело в том, что компьютеры изначально были придуманы, чтобы решать задачи быстро. В быстроте был весь смысл, потому что любую компьютерную задачу человек может решить и без компьютера…, но медленно. Но работа программиста занимала очень много времени, и с этим надо было что то делать. Естественно начали с самого медленного участка – записи алгоритма в понятной машине форме. Так появились первые языки программирования, а между программистом и машиной вклинился транслятор. Первичная гармония бытия настоящего программиста была нарушена, и сделал это он своими руками. С тех пор пошло и поехало. Появились операционные системы, которые еще больше отдалили «настоящего программиста» от машины. Над операционными системами выросли командные оболочки (ээх, вы помните «Примус», друзья…). Власть над машинами захватили безжалостные админы, которые начали распределять время на общение «настоящего программиста» с машиной (опять, кстати, при помощи программ, написанных самим «настоящим программистом»). Появились библиотечные функции, которые отобрали у «настоящего программиста» последнюю радость в жизни - разработку базовых алгоритмов. Эпоха настоящих программистов закончилась.

Новые времена требовали от программистов совсем других умений. Вместо решения отдельных задач, необходимо было создавать программные системы, которые могут решать целые классы задач. Появились базы данных, конструкторские пакеты, графические системы, и т.д. и т.п. А главное – программы стали товаром. Поэтому программистов теперь нужно много и программистов теперь нужно разных. Нужны миллионы web программистов для создания и поддержки сотен миллионов сайтов и web приложений. Причем web программисты нужны разные, специалисты по PHP и Ruby, JSP и ColdFusion, ASP.NET и Perl, JavaScript и Ajax, Flash и еще бог знает что. Нужны разработчики ABAP для SAP, и X++ для Acsapta. Нужны программисты С++ под OpenGL и COBOL под маинфреймы. Нужны разработчики БД под Oracle и MSSQL.

А вот с «настоящими программистами» просто беда. Практически никому они не нужны, а университеты продолжают их выпускать из года в год. Вакансий, до которых «настоящий программист» готов снизойти, можно пересчитать по пальцам. Разработчик уровня ядра Linux, или, на крайний случай, программист-математик для разработки OCR алгоритмов, на меньшее он не согласен. Реальная жизнь жестока, и навыки программистских олимпиад в ней остаются невостребованными. Все это плохо влияет на характер «настоящего программиста». То, чем он занимается на работе он считает ерундой. Своих коллег он именует не иначе, как быдлокодерами. Архитекторов и аналитиков считает бездельниками, а начальство он ненавидит за то, что ему недоплачивают.

Работать с «настоящим программистом» тяжело. Ты никогда не объяснишь «настоящему программисту», что он был неправ, когда написал свою сортировку (O(n * log n)) вместо использования библиотечной (O(n*n)), потому что время сортировки данных по любому на два порядка меньше времени передачи по сети, и его сложный код кому то придется поддерживать, и есть подозрение что на комбинации граничных условий он даст ошибку, и он потратил на это кучу времени, вместо того чтобы реализовать списание складских остатков по методу FIFO… «Настоящий программист» обязательно начнет писать свой компилятор или, на худой конец, framework потому, что все существующие, по его мнению, полное барахло. Многие поколения разработчиков изнывают в рабстве Инструментов в свое время созданных, а затем заброшенных «настоящими программистами». «Настоящему программисту» все равно, на каком языке писать и под какую платформу. Главным образом потому, что ни одну из них он не удосужился изучить досконально.

Что ни говори, «настоящий программист» умеет программировать, это мощнейший, но неуправляемый источник программного кода и головной боли для его руководителя. У многих синдром «настоящего программиста» со временем проходит (правда не у всех), и тогда он становится настоящим программистом без кавычек.

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

Вот такого чела можно действительно назвать Настоящим Программистом.