ДотНет отличная технология.
Единственная её сырость в недостатке
(даже можно сказать отсутствии)
качественных учебных материалов.
Нет ни одной книги, в которой будет
рассмотрено все возможные идеи по
использованию аттрибутивного
программирования.
Нет ни одной книги где бы
демонстрировались преимущества
генерации кода на лету.
И таких областей много... даже очень
много - начиная от рефлекшион и
заканчивая глобализацией.
Я считаю, что все подходы
программирования, которые
использовались раньше, должны быть
пересмотрены в среде ДотНет - и пока
это ещё идеи которые не оформились в
рамках стандартов индустрии. Это
касется всего - и структуры системы, и
методик построения дерева класов.
Сейчас в каждой команде свои
стандарты. Но эти внутренние
стандарты, фреймоворки и ноухау (в
случае присутствия в команде хорошего
опытного ДОТНЕТ архитектора) дают
огромный прирост в скорости и качестве
кодирования по сравнению с более
старыми языками программирования.
Новая версия дотнет только усугубит
положение. Все бросятся (и уже
бросились) писать книги по dotnet 2.0
вместо того чтобы резюмировать и
делать выводы из Best Practices для dotnet 1.1.
Я не вникал в MSF, тут спекулировать не
буду, но насчет 11 человек это явное
преувеличение. Насколько я понимаю, ни
MSF ни RUP не относятся к группе
тяжеловесных процессов. Это ниша CMM 3+,
CMMI, DOD-STD/MIL-STD и прочих. Да это и понятно.
Их ниша - обычное коммерческое ПО, а не
ПО для марсохода или АСУТП.
В XP ролей тоже предостаточно, но это
ведь не означает что каждая закреплена
для отдельного человека.
ЗЫ: Русская редакция Microsoft Press (если я
ничего не путаю) издала лет 5 назад
чудовищно неудобоваримый талмуд по RUP,
однако с тех пор и RUP развивался и книги
появились приличные. По крайней мере RUP
made easy мне сильно понравилась, надо бы
рецензию в
http://www.developers.org.ua/archives/category/books/ накатать.
;)
беедненький :) ты что, думаешь, что
пролог учат, чтобы потом легче было
устроиться на работу
пролог-программистом? :)) учат-то небось
_концепциям_, а не языку как таковому.
цитата:
I fear - as far as I can tell - that most undergraduate degrees in
computer science these days are basically Java vocational training.
- Alan Kay, отсюда:
http://acmqueue.com/modules.php?name=Content&pa=showpage&pid=273
> >> Еще нам Пролог читали.
> >> Так чтобы на нем программы писать,
> >> надо конкретно мозги "свихнуть"...
> >> Проблем еще хватает :(
> smgc> беедненький :) ты что, думаешь, что
> smgc> пролог учат, чтобы потом легче
было
> smgc> устроиться на работу
> smgc> пролог-программистом? :)) учат-то
небось
> smgc> _концепциям_, а не языку как
таковому.
> Прекрасно понимаю, вот только
несколько НО:
> Моя специальность называется
"Программное обеспечение
> автоматизированных систем". Пролог
здесь как-то не к месту, имхо.
интересно, почему? он что, не
"программное обеспечение"?
> Чтобы понять концепции логического
программирования, надо
> выучить хотя бы один язык логического
программирования.
например, пролог.
> Здесь чистая
> теория не прокатит - как я уже сказал,
надо мозги "свихнуть" :)
бред. все, на чем основано ЛП, развилось
задолго до до появления компьютеров, и
уже тогда это не было "чистой теорией"
т.к. имело вполне реальные приложения.
теперь - и подавно.
> И еще, о каком логическом или
функциональном программировании
может
> идти речь, если у нас не было курса
ООП?!!
JFYI: ни функциональное, ни логическое
программирование в чистом виде не
имеют к ООП никакого отношения. более
того, я бы сказал, что это
ортогональные понятия, и учить ФП и/или
ЛП _до_ ООП не только возможно, но и,
ИМНО, желательно.
> Я недавно открыл последнее
> издание Страуструпа и офигел. Даже не
подозревал о некоторых
> возможностях обыкновенного С++. Это
надо в первую очередь давать.
популярное заблуждение. знание
тонкостей того или иного языка
программирования еще не делает
человека хорошим программистом. я
поэтому и привел цитату Алана Кея про
"Java vocational training". тебя, глупого, учат
фундаментальным вещам, а ты хочешь
чтобы тебя вместо этого натаскивали
быть coding monkey.
сорри.
Пролог не "свихивает" мозги а
тренирует.
На примере Пролога можно выучить новые
стили программирования которые потом
применять в других
языках.
Твой пример очень показателен тем, что
ты пытаешься применять
процедурный подход к программированию
на Прологе, что неверно.
На Прологе неверно думать в терминах
"циклов" и "вызовов".
Вадим
8-)
В этом и заковыка "весь объём артефактов методологии" и не
предполагается к использованию в рамках _одного_ проекта. Обычно.
> > Насколько я понимаю, ни
> > MSF ни RUP не относятся к группе
> > тяжеловесных процессов.
> Надо заметить, что "не отношение к группе тяжеловесных процессов" у MSF,
> RUP, и XP разное: первые два определяют (временный) технологический
> МАКСИМУМ, цель, к которой надо стремится, тогда как XP - МИНИМУМ,
> основу, от которой можно оттолкнуться. Разработчики MSF и RUP сами
> пишут, что для начала вам нужно ВЫБРОСИТЬ всё, что вы считаете не
> нужным. Но для того, чтобы оценить (бес)полезность того либо иного
> артефакта её ((бес)полезность) необходимо оценить, а для этого нужны
> квалификация, время, и деньги, которых, как всегда, нет... XP говорит
> обратное: вот МАЛЕНЬКИЙ список того, что необходимо. Всё остальное
> "добавьте по вкусу"...
То есть ровно то же (для XP): для того чтобы оценить (бес)полезность
того либо иного артефакта (который можно добавить в XP) нужны
квалификация, время, и деньги, которых, как всегда, нет...
Не собираюсь выступать в роли RUP адвоката, но RUP и XP могут быть
достаточно близки как процессы, и выбор может осуществляться исходя из
личных предпочтений разработчиков и особенностей проекта, нежели из
"тяжеловесности" или "легковесности" процесса. Сорри, опять
банальность сморозил.
> > Их ниша - обычное коммерческое ПО, а не
> > ПО для марсохода или АСУТП.
> Гы, а что же вы предлагаете использовать несчастной Microsoft при
> разработке АСУТП??? У них это новая игрушка, они разработчиков
> скупают... :)))
Тут не в курсе.
Но есть другие, более практичные
системы, например CLIPS, которые зная
Пролог освоить куда легче.
[...]
Якименко Михаил wrote:
> А вы сами сталкивались с Прологом?
учил в институте 13 лет назад, за что
очень благодарен преподавателям.
> Как вам такой цикл:
> loop.
> loop:-loop.
1) жалкая попытка эмулировать
императивное программирование
средствами прологовской машины вывода
2) автор явно незнаком со стандартным
предикатом repeat/0.
> Это я к тому, что принципы
> понять достаточно легко.
> Но вот писать на логическом
> языке очень непросто (см. пример),
непросто - писать на прологе
фортрановские программы. те задачи,
под которые пролог заточен, писать на
нем очень и очень легко. из недавних
примеров - некоторые задачки из GLAT.
> надо "свихнуть" мозги
> (задолбался уже повторять эту
> фразу...). А мозги свои я ценю...
если такие простые вещи могут
"свихнуть" вам мозги, могу только
посочувствовать :) я бы наоборот,
радовался возможности взглянуть на
обычные проблемы с другой стороны.
[...]
> Я считаю ООП более фундаментальным
> понятием. И если нам на 4!!! курсе
> его не рассказали, это ОЧЕНЬ плохо.
> И уже, похоже, не расскажут... :(
ну, чтобы вас утешить, могу сказать, что
так считают не все:
"Object-oriented programming is an exceptionally bad idea which could
only have originated in California." -- EWD
:-)
меня тоже никто в институте не учил
ООП, и ничего страшного :)
> Не спорю, у ЛП и ФП есть свои
> области применения, но эти
> области практически не связаны
> с автоматизированными системами.
ну, во-первых, не надо валить ФП и ЛП в
одну кучу - это все-таки очень разные
вещи. во-вторых, на чистом прологе
действительно вряд ли кто-то сейчас
возьмется что-то писать от начала и до
конца (в отличие от того же лиспа,
кстати). но вот как _часть_ большой
системы, я вполне могу себе
представить машину вывода - например,
для представления каких-нибудь
бизнес-правил.
это я про логическое программирование.
о функциональном и говорить не надо,
т.к.:
1) существуют целые системы, полностью
написанные на функциональном языке,
например, Yahoo Store, Orbitz;
2) многие программы включают в себя
функциональный язык как средство
расширения - см. emacs, AutoCAD;
3) идеи ФП сейчас есть почти во всех
процедурных языках - напр.
функциональные объекты и алгоритмы в
C++/STL, функции, методы и
лямбда-выражения в питоне, блоки в ruby и
т.п.
> Да и в Украине я не представляю
> проекта, который бы делался на
> том же Прологе.
ну, например, у меня товарищ в киеве
написал полноценную машину вывода для
поддержки бизнес-правил в их
банковской системе. реальная система,
реальные требования, реальные клиенты.
> Щас как выскажусь... :)
[...]
тут уже многие вам ответитили, поэтому
я не буду подливать масла в огонь.
взгляните на ситуацию так: у вас есть
несколько лет жизни, которые можно
потратить на собственное образование,
минимально заморачиваясь житейскими
проблемами, как-то: армия, работа,
семья, дети и т. п. у вас, пусть не
всегда, но есть возможность делать то,
что вам интересно, а не то, за что
платят деньги. потом таких
возможностей будет все меньше и
меньше. так что не нужно ждать, что
преподаватели вас чему-то научат. все в
ваших руках.
ну и вдогонку несколько ссылок - "юноше,
обдумывающему житье".
прежде всего, Paul Graham:
http://paulgraham.com/hs.html
http://paulgraham.com/college.html
ну и конечно Peter Norvig,
"Teach Yourself Programming in Ten Years" :)
http://norvig.com/21-days.html
оттуда можно еще много всяких
интересных ссылок нарыть.
hope this helps! :-)
motus.
[...]
> SM> 1) жалкая попытка эмулировать
> SM> императивное программирование
> SM> средствами прологовской машины
> SM> вывода
> Значит плохой препод,
> о чем уже говорилось.
хорошие преподы: Братко; Стерлинг и
Шапиро.
> Что такое GLAT?
http://www.google.com/googleblog/2004/09/pencils-down-people.html
> SM> "Object-oriented programming is an exceptionally bad idea which
> SM> could only have originated in California." -- EWD
> Оригиналов всегда хватало :)
таких, как Дейкстра, увы, немного.
> SM> меня тоже никто в институте не учил
> SM> ООП, и ничего страшного :)
> 13 лет назад ООП только развивалось.
> Сейчас это основная идеология.
> Так что сравнение некорректно, ИМХО.
13 лет назад все уже было - и Гради Буч, и
Шлеер и Меллор, и Страуструп
продавались в русском переводе, и на С++
народ писал вовсю. просто мы не
ожидали, что нам это все разжуют и
положат в рот в институте.
при всем моем уважении к
объектно-ориентированному подходу, на
нем свет клином не сошелся, и в общем
объеме знаний, которыми должен владеть
программист, ООП занимает не так много
места, как кажется на первый взгляд.
> Идея написать машину вывода
> для бизнес-правил хороша.
> Но вот я сомневаюсь, что это
> целесообразно.
все зависит от конкретной предметной
области. есть _очень_ много приложений,
в которых декларативное представление
знаний естественным образом следует
из постановки задачи.
> Надо знать сам
> язык, суметь его состыковать
> с существующей системой.
язык - какой? пролог? никто и не говорит,
что это нужно писать на прологе.
говорилось про абстрактную машину
вывода, а она может быть написана на
чем угодно. просто если вы знаете, что
такое ЛП, написать такую систему будет
гораздо проще.
> Самая большая проблема -
> поддержка этой системы.
> А что если уйдет разработчик?
> Новый человек будет месяц
> разбирать его писанину, а
> клиент ждать не будет.
это вопросы управления проектом, не
имеющие ничего общего ни с ФП, ни с ЛП,
ни с ООП.
[...]
> SM> так что не нужно ждать, что
> SM> преподаватели вас чему-то
> SM> научат. все в ваших руках.
> Красиво и правильно, вот только
> в жизни все не так радужно :(((
будет только хуже, поверьте мне. так
что лучше учиться самому и сейчас,
причем базовым вещам, на которые
впоследствии у вас времени не
останется, и не сильно вестись на
модные слова типа C#, .NET, RUP и пр.
> А я поодумал, что имелось ввиду
> машину вывода писать на ЛП. Если
> самому сделать машину, то это
> действительно хорошая идея.
хы :) самому писать машину вывода,
значит, хорошо, а использовать
проверенную десятилетиями и
документированную по самое нехочу
прологовскую - плохо? NIH Syndrome? :-)
> SM> будет только хуже, поверьте мне.
> Ну что ж вы такой пессимист?
> Смотрите на жизнь легче :)
почему пессимист? я наоборот, говорю
что _сейчас_ у вас все хорошо, нужно
этим пользоваться :)
> Что на ваш взгляд базовые вещи?
то же, что и 10 и 20 лет назад. зайдите на
сайт любого уважаемого университета
(Stanford, MIT, Berkeley, CMU) и посмотрите что там
преподают. на каком курсе там
преподают, если преподают вообще, C#, .NET,
ASP и пр. для сравнения - если взять
какой-то колледж или университет
попроще, там этого добра хоть отбавляй.
наводит на размышления, однако.
> Недавно был у нас семинар "Преподавание информационных технологий в
> Приднепровском регионе", там выступал начальник Днепропетровского
> отделения кадрового агенства "Метрополис" Иван Пойда. Он сделал анализ
> software отрасли, так по его словам перспективы очень радужные. Он
> прогнозирует быстрый рост отрасли и, соответственно, большая
> потребность в кадрах. Считает, что в Украину будут перетекать
> outsourcing-проекты из Индии и Китая. Короче говоря, работа у меня
> будет :), тем более достаточно высоко оплачиваемая.
Ну-ну. Я не насчет твоего трудоустройства, а насчет перетекания
проектов из Индии и Китая. Пока нашу страну не перестанет лихорадить и
не появится некая, хоть минимальная, стратегия, ни Индии ни Китаю мы
не конкуренты. Или г-н Пойда имел ввиду что мы будем "перебивать"
Индию по более низким ценам, как уже происходит со всякими
Бангладешами? Если так, то о "высокооплачиваемости" придется забывать.
ж-)
work for peanuts. (c)
> Из всего этого я сделал вывод - надо учиться сейчас, потом и всегда.
Думаю, такой вывод (точнее, установку) можно сделать и без всего
этого. И Сергей и Пол уже объяснили чем так хорош в этом смысле
институт.
Зря ты так... Учись себе спокойно в
универе, наживай друзей, личную жизнь
устраивай. А когда будет оставаться
свободное время - почитывай книжки
всякие - причем по возможности
связанные с тем, чем непосредственно
хочешь заниматься. То есть повыкидывай
всякие Теории управления, дискретные
математики, Матстатистики те же и
прочее, кроме того если собираешься
программить на Делфе, то зачеме тебе С -
ну и в таком духе. Подобными вещами
нужно заниматься только в объеме
необходимом для сдачи предмета.
Потом, кодинг - не то чему можно научить
учиться... Тут нужна практика и
параллельное ознакомление с опытом
других программеров - коллег или
авторов авторитетных книг :-). Практики
достаточной у тебя в универе не будет
никогда - тут нужно только участие в
комерческом проекте. Поэтому все это
фундаментальное образование - туфта,
просто романтическое и относительно
беззаботное время жизни...
На счет работы тоже не переживай. Все
конторы прекрасно понимают, что
качественные специалисты уже давно
при работе, а штат пополнять можно
только за счет зеленых студентов.
Таким образом для трудоустройства
после универа не нужно быть готовым
спецом (которым там стать невозможно -
см. выше) - нужно просто неплохо
выглядить на фоне одногодок.
Да, а знание тонкостей языка дает
возможность уверенно чувствовать себя
в среде других программеров. Что же
касается эффективного использование
всех возможностей языка, то на
практике необходимость в нем
возникает достаточно редко - я имею
ввиду реальные глубины
Все...