Как стать автором
Обновить

Комментарии 231

Разница между кодером и программистом действительно интересна. Кодер — это, грубо говоря, чернорабочий — вроде токаря или фрезеровщика, в то время, как программист — инженер в привычном понимании. Что не мешает кодеру быть высококвалифицированным специалистом, кстати.

Просто почему-то это разделение на программистов, проектирующих системы, и кодеров — реализующих их идеи, сильно неявно. Есть постановщики, но у них другой спектр задач.
Спасибо за дополнение. Разделение на самом деле неявно. У меня это не указано.
разделение очень даже явно. только в вакансиях таких программистов называют архитекторами.
Согласен, точно так же для себя разделяю эти два понятия.
НЛО прилетело и опубликовало эту надпись здесь
%username%, вы учитесь на первом курсе или уже программируете сложную вычислительную систему своем возрасте?
Стать программистом в 9 классе могут только единицы во всем мире, и это скорей исключение. Если вы один из них — вам респект.
НЛО прилетело и опубликовало эту надпись здесь
Это не показатель.

В любой стране хватает кулибиных, но отрасль не может держаться на одних только самородках. Во-первых — их мало, во-вторых — они неопытны, а в-третьих — у них нет базы готовых решений.
НЛО прилетело и опубликовало эту надпись здесь
Меня очень удивляет, когда мне рассказывают фактически мой же жизненный путь, и уточняют — «поверьте, такие люди бывают».

Я охотно верю. Я сам такой. Однако, даже мне нередко не хватает именно фундаментального образования — из-за этого я вынужден тоннами переваривать книги вроде Фаулера, чтобы научиться именно инженерному подходу в программировании. И все время пытаться переписать тот код, который написал год назад, потому что он ужасен.

Однако, в реальности дела обстоят более грустно. Работодателям нужен специалист, который решит поставленную задачу, а не самоучка, который за три месяца овладеет нужной технологией, но результат нужен сейчас.
Неделя — две уходит для того чтобы начать работать с новой технологией ;). Недавно работал 1С-иком через неделю уже полностью в курсе был, а по мелочам догонялся мануалом.
80% времени проведенного в инсте впустую. В принципе на лекции уже полтора года не хожу (учусь на удовл, ибо не интересно).
Из матана пригодилось что то лишь однажды по векторам :), а так не вижу никаких фундмаентальных знаний которые мне дают. Ну не понимаю я — НАФИГА мне знать гидродинамику жидкости? ;)
А потом после недели-двух освоения новой технологии и возникают вопросы, когда человек не знает даже банально как поднимаются конструкторы в статических классах.

В 90% приложений, которые пишутся для «бизнеса», никакого умения писать вообще не надо. Точно так же, как и в 90% веб-страниц. Там достаточно посадить десяток обезьян, которые знают язык — они напишут.

Проблемы начинаются в специализированных приложениях — для роботов, например. Там сплошной матан, матрицы и численные методы.
Вопросы поднимаются и решаются еще за час два курения манов. все нормально — все знать нельзя.
Если начинаешь писать специализированные приложения — то там можно и поучить не хватающей теории. Опять же учитывая количество узких областей, лучше уметь быстро учиться, чем потратить пять лет в попытке знать Все и в итоге все равно Все не узнать.
Если вы способны решить совершенно любую задачу за 2 часа курения манов — то вы либо гениальный программист с зарплатой около 500 тысяч рублей, либо недоучка, который не представляет, что такое «любая задача».

Сами для себя решите, к какой группе относитесь.
Я сказал «любую задачу»? Выше был пример про конструкторы в статических классах.
Если скажут разберись с искусственным интеллектом естественно я этого не сделаю :)
если человек знает в молодом возрасте кучу языков и алгоритмов на отлично — он никуда не программист, он теоретик.
Знать язык надо, но ещё больше надо знать как применять свои знания.
Кстати насчет переписывания кода — программированием занимаюсь где то 8-ой год. 5 лет профессионально — проблемы с переписыванием исчезли на второй, третий год проф работы. Старый код вполне приятен и поддается доделкам\исправлениям\улучшениям.
Ты не постиг дао, совершенен только ненаписанный код :)
Вы молодец. Но все равно, если лет через 5 глянете на то, как пишете сейчас, думаю, ужаснетесь.)
НЛО прилетело и опубликовало эту надпись здесь
через 5 лет это будет трансцендентный ужас перед бездной, по сравнению с которым нынешние ужасы покажутся майскими цветочками на зеленой лужайке в солнечный день.

Но все будет круто.
А чтобы ужасов было меньше (или больше)), стоит почитать умных дядек типа Фаулера и GOF, если еще не.
А зачем вы пошли в лингвистический ВУЗ?
Вопрос к keksn
НЛО прилетело и опубликовало эту надпись здесь
Я может чего то не понимаю. От куда берется мнение, что для программирования высшее образование не нужно, а для изучения иностранного нужно обязательно идти в ВУЗ.

Да я знаю не меньше примеров самостоятельно изучения английского, франзуского и немецкого языков одновременно. И эти люди так же говорят, что изучать второй язык (по умолчанию русский с индексом 0) намного проще.

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

Желание, практика и целеустремленность. Без этого можно протирать штаны где угодно и сколько угодно времени.
слушайте, мне кажется это немного странным… вы считаете, что чтобы быть программистом ВУЗ не нужен, но для того, чтобы выучить 2-3 иностранных языка, идете в профильный вуз, а не на курсы (не говоря уже о том, чтобы просто обложиться самоучителями и выучиться самому).
НЛО прилетело и опубликовало эту надпись здесь
Десять пар в неделю? Что это за вуз?
НЛО прилетело и опубликовало эту надпись здесь
Ерундой можно страдать всю жизнь (((
Писать программы, причем высокого качества, можно не заканчивая ВУЗов. Так и есть. Но есть целый ряд задач, в которых не обойтись без знаний высшей математики, физики, цифровой обработке сигналов и многих других. Я в одной из веток уже писал, что наши ракеты давно не летают по траектории пушечного ядра. Кто то должен разрабатывать системы управления.
В какую область податься — выбор каждого.
И еще. Путать спортивное программирование с профессиональной разработкой ПО все же не стоит.
НЛО прилетело и опубликовало эту надпись здесь
Вы так все-таки считаете?
Спасибо (:
Одно дело щелкать задачки на олимпиадах и совсем другое дело окунуться в практическую сторону.
первое закаляет мозг и позволяет быстрее адаптироваться во втором. Тем более что второе очень часто в многих проектов базируется на первом. В практических задачах встречается имхо очень много олимпиадных задач, которые неподготовленные люди, не умеющие решать олимпиадные задачи, решают втупую, что сказывается на качестве ПО. И это грустно:(
> что сказывается на качестве ПО.

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

если бизнес делает rocket science, то само собой, только это редкость.
ну не скажите. Вот у нас мелкая фирма по производству веб сайтов. И мне на практике два раза было необходимо решать нетривиальные задачи связанные с анализом текстов на похожесть. Первая задача была проверить является ли текст, введенный пользователем не спглагиаченным (поменяны абзацы местами, некоторые слова заменены синонимами, перепечатана часть предложений.), а вторая система автоматического редиректа по поисковым запросам с возможностью опечаток в нем (например у нас есть мп3 портал и в нем поиск. Пользователь хочет найти какой нибудь альбом, но точно не помнит как он называется и вводить его название и год и примерное имя исполнителя. И система автоматически его переводит на нужный альбом). Средний программист такие задачи бы долго решал (мое имхо), а знания, полученные на олимпиадах позволили мне решить их достаточно быстро и без срывов сроков
> И мне на практике два раза было

вот это и называется «редко» :)
ну я в этой фирме сделал 4 проекта всего. Так что 2 из 4 это 50% что уже нормально%)%)%)
сдаюсь :))
Может я конечно не прав, но в моем понимании, человек, занимающий места на таких олимпиадах (хе-хе хотя я тоже как-то на всеросе отхватил третий диплом) зачастую является трудным в общении человеком, соответственно работать в коллективе ему будет сложнее, а уж тем более в продвижении по карьерной лестнице. Плюс ко всему умение решать задачки, предлагаемых на этих олимпиадах особой пользы в реальной жизни не принесет. Но для разминки мозгов это очень даже.
НЛО прилетело и опубликовало эту надпись здесь
У меня те-же наблюдения. В одной из олимпиад (по матем. а не инф.) где соревновались 4 школы кажется, взял 2 место один из моих одноклассника. Я учился с ним 4 последних года (9 класс- 12 класс) в школе, и за это время он так и не сумел нормально интегрироваться в коллектив, если собираемся отпраздновать новый год — он занят, день рождения одноклассника — он должен готовится к контрольной. Я понимаю что это тоже важно, но создавалось впечатление что он живёт в в мире всяких котангенсов и теорем, а в реальный выходит чтобы перекусить. Кстати, его труды не были напрасны, сейчас он на бесплатном обучении в одном из престижных университетов США.

Однако, знавал многих олимпиадных гениев, которые в жизни весёлые и разговорчивые ребята, так-что написанное выше — просто наблюдение и ничто больше.
Обучение в таком университете будет не напрасным опять же, если человек не асоциален. Иначе окончив его он будет просто рабочей пчелкой в чьих-то умелых руках
размышления 22-х летнего паренька о том как стать матерым программистом тоже умиляют
9 классник?!.. В моё время многие люди в ~12 лет достаточно свободно писали на асме или прямо в машинных кодах.
я в 9 лет начал на бейсике писать простенькие игры, абсолютно не обязательно учиться в каком-то вузе, чтобы получить какую-то профессию… ну есть пара исключений вроде врачей и юристов, например. если чем-то заниматься и изучать просто интересно, то это лучший катализатор. уверен что большинство талантливых программистов — самоучки
Может, сложную технику и навряд ли, а лично я в 9 классе активно изучал программирование для Windows и писал на C/С++ несложные нативные приложения (одно из них — игра «Точки», помнится, намутил алгоритм поиска зон и блокированных точек, а через год узнал, что сделал практически то же самое, что и поиск в глубину). При этом не могу сказать, что у меня была какая-то особая подготовка. Только турбо паскаль годом раньше да пара книжек по Win3.1 от братьев Фроловых… Кстати, на мой взгляд, в детстве новые концепции вообще легче усваиваются.
Решать олимпиаду — не значит быть программистом.

Хорошо и здорово, когда человек может решить олимпиаду. Это показатель ума и таланта. Возможно, знание некоторых алгоритмов еще. Показатель того, что человек потенциально может стать хорошим программистом.
я бы не согласился.

во-первых для того чтоб занимать первые места на олимпиадах по програмированию нужно всего лишь заучить хитрокрученые алгоритмы и знать куда их применять.

во-вторых ваш уровень программирования прямопропорционален вашему опыту программирования. бывают исключения но все-же молодые люди — хорошие кодеры. люди с опытом — хорошие разработчики программного обеспечения. а это совсем разные вещи.
> во-первых для того чтоб занимать первые места на олимпиадах по програмированию нужно всего лишь заучить хитрокрученые алгоритмы и знать куда их применять.

Золотые слова! Поверьте, если мне придётся выбирать между человеком, который знает алгоритмы и умеет их применять, и человеком, который не знает и не умеет; то я скорее назову программистом первого. Или вы находите мой выбор нелогичным?

> во-вторых ваш уровень программирования прямопропорционален вашему опыту программирования.

Да! Но что считать опытом? Если человек десять лет делает сайтики, отличающиеся только цветом, это богадтый опыт? А если человек разобрался с интаксисом — взялся за процедуры и циклы; разобрался со влженными циклами — взялся за классы, объекты, машины состояний; разобрался с этим — взялся за нити, рекурсии и функциональное прогарммирование… И вот прошла пара лет, а опыть второго в 1000 раз больше, чем опыт первого.

Возраст, стаж, количество строк… не могут адекватно характеризовать опыт.
конечно ваш выбор логичный, но вы почему-то решили что есть всего два варианта…

знает + умеет — хороший кодер
не знает + умеет — часто хороший программист
знает + не умеет — на свалку
не знает + не умеет — гуманитарщик?

и не путайте знание «хитрозакрученных алгоритмов» со знанием «существования алгоритмов». в 99.9% случаев не надо реализовывать алгоритм мега сортировки со сдвигами стриптокока-мухчинского(сам выдумал, не ищите). а вот знание существования алгоритмов дает программисту возможность базируясь на своем опыте сделать правильный компромис между сложностью скоростью итд, чего олимпиадник делать не то что не умеет — скорее не хочет и не будет.
Олимпиада это немного не то…
даже очень хорошему олимпиаднику может банально не хватить опыта и его алгортмы будут работать криво (потому, что он может банально не знать о том, что некоторые операции выполняются дольше других, хотя теоретически должно быть наоборот).

Олимпиада это решению небольших и сложных алгоритмически задачек за небольшое время. Если система будет большой, то 9ти классный олимпиадник в 999 случаях из 1000 разобраться в ней не сможет. О спроектировать и говорить не приходится, проектировать без опыта это вообще смерти подобно.

Олимпиадники, возможно, смогут хорошо справиться с оптимизацией или разработков маленьких но проблемных кусочков в системе, где буксуют классические алгоритмы и кодеры не могут придумать другие (программисты заняты чем-то другим)… Не всех кусочков, а только некоторых, там где результат на 100% зависит от кода, а не внешних факторов (типа особенностей работы некой сторонней систему… субд там или сетевого стека)…

Не переоценивайте олимпиадников, на самом деле это просто хорошие умы, у которых много шансов научиться. Но говорить о них как о уже наученных не надо, сколько либо большие практические задачи, недоступные кодерам, он все равно не решат.

простите за опечатки, жаль нет возможности поправить.
>90 % решаемых задач на данный момент – это базы данных и web-программирование.

Чем тогда объясняется столь высокая популярность С? Не знаю, насколько можно доверять этому источнику, но выглядит внушительно: www.langpop.com/
Вероятно, тем, что C приспособлен для того круга задач, который он решает — это системное программирование, низкоуровневое программирование, драйвера.

Если для решения высокоуровневой задачи я могу пользоваться как Phyton, так и Ruby или C#, то драйвер на Энларге или ПХП не напишешь.

То есть, фактически, большой спектр современных языков взаимозаменяем, и только C/C++ заняло свою нишу и никуда оттуда не собирается.

Но это исключительно мое предположение, ни на что не претендующее.
НЛО прилетело и опубликовало эту надпись здесь
Думаю справочку после такого заберут и признают недействительной…
НЛО прилетело и опубликовало эту надпись здесь
Ставьте копирайт :-)
Enlarge your Erlang =)
C++ your penis!
Возможно присудствием ниши Linux
Возможно присудствием ниши Linux
Зачастую программист — это не только профессия. Это диагноз :)
Не совсем согласен с тем, что программистов делают в вузах. Вы правильно написали про мастеров и ремесленников. Только дело в том, что и «мастерству» человек учит себя сам. Ни разу не видел, чтобы кто-то кого-то смог научить программированию.

Но вот парадокс — хороший вуз по специальности и правда очень полезен. Из-за того, что в хорошем вузе по специальности огромное число умных и думающих людей, которые интересуются примерно тем же, и сознательно учатся (в.т.ч. и преподаватели). Не обязательно в абсолютных числах «огромное число», но по сравнению с любым другим местом-то уж точно.
«90 % решаемых задач на данный момент – это базы данных и web-программирование.» — большая ошибка, уважаемый! Т.е. если Вы о своём круге, то может быть… А в мире — от 30 до 60 процентов решаемых задач сегодня — это RealTime & Embedded System
Мне бы хотелось, чтобы профессионалы оставались в России. У нас цифры, которые вы привели, значительно меньше. К сожалению…
У нас тоже полно задач. Причём, чтобы создать сайт, если это не яндекс-почта, больших усилий не надо; а зачастую надо просто поставить phpBB на уже готовом хостинге. А вот чтобы пользователь дошёл до этого сайта должна быть написана куча нетривиального софта, которая будет учитвать пользовательскую наработку, снимать с него денежки (билить), которая будет мониторить сеть (кучу разношёрстного и постоянно обновляющегося оборудования), куча софта, которой будет пользвоаться суппорт, монтажники оборудования, бухгалтерия… И это всё очень непростой софт и готовых решений тут нет (потому, что постоянно появляются новые услуги, новое железо, новые законы о связи и прочее и прочее) и нужен этот софт не где-то в берендеевом царсте, а именно здесь и сейчас.
1. Я никогда не жил в России :)
2. Может это всё-таки круг общения? ведь военные заказы, например, это редко БД. как правило RealTime & Embedded System. приборы всякие. медицина (ну кроме баз данных :). космос. и т.д. список длинный.
Это лично мое мнение, формируемая в том числе и кругом общения. Большинство толковых ребят из моего потока занялись Вебом, причем уже достаточно давно. Остальные (менее толковые) делают обертки для баз данных. В других городах, например Королев — Московская область, интересы совершенно другие.

Тех, кто ушел от чисто абстрактного программирования, среди моих знакомых единицы. Во фрилансе тоже правит Веб. Я ни коим образом не претендую на точность цифр, при этом считаю, что доля RealTime & Embedded System в России существенно ниже, чем в мире. Я посмотрел в Вашей карточке область интересов, спасибо за точку зрения :)

И конечно же, очень хочется посмотреть на исследования по распределению областей, данные которых Вы приводите.
К сожалению показать мне нечего. Я не так давно работал на один инвестиционный фонд. Данные из их отчётов (куда вкладывать, израиль+европа+азия+штаты немножко...), к сожалению всё закрыто. Именно поэтому цифры приблизительные, по памяти…
Некоторые данные (опрос подписчиков мейл-листа) по израильским работникам хай-тека здесь. Там нет ответа на Ваш вопрос, так, любопытство удовлетворить… А вот список вакансий на 14/05/2009
Yediot Information Technologies — какие информационные технологии? о_О

На счет вопроса по инвестиционным фондам, полностью согласен. Это как указатель направления, куда стоит обратить внимание начинающему разработчику. Я думаю в скором времени данные по России будут примерно такие же.
Yediot Information Technologies — это смесь иврита и англ. :-)~ Новостные информационные технологии.

Нет, это уже здесь и сегодня! Решали каких экспертов нанимать для экспертиз проектов…
Жаль не хватает заряда заплюсовать
> Знания, навыки, приемы в каждой предметной области специфичны.

Зато математика универсальна, именно поэтому ее надо знать.

> 90 % решаемых задач на данный момент – это базы данных и web-программирование

Феерическая херня. В любом случае, ссылку на исследование — в студию.

> предметной области каждый год появляются новые языки программирования, новые фреймворки и технологии.

Новые — громко сказано. Большинство активно используемых сейчас языков родом из 80-90х годов.
Языки, реализующие определенный стиль программирования учатся за пару дней, при наличии хотя бы пары пары уже известных. Специализация программиста на языке — невероятный идиотизм.

> Web-программисты радуются появлению Ruby on Rails

Reinventing Lisp.

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

Это — не программирование, это — говно, работа для обезьяны.

> Понятно, что после 5-тилетней разработки баз данных будет несколько сложно реализовать себя в области 3D-моделирования, при условии, что в данной области уже есть специалисты. Хотя шанс есть всегда.

Опять-таки достаточно знать математику; нюансы выучиваются достаточно быстро.

> Проводя аналогию, я бы не хотел оказаться у хирурга, который всю жизнь был окулистом. Для любителей холиваров — есть такой врач — терапевт (врач широкого профиля).

Аналогия — говно.

> Здесь тоже нужно быть Гуру, и танцев с бубном не меньше.

Танцы с бубном — это не про программирование.

> Можно зная, например, Pascal и основы ООП, изучить язык C++ самостоятельно.

Нахер C++. Работать надо, а не с указателями трахаться.
Лет 5 назад были ебанашки, всерьез изучавшие ассемблер, сейчас их место постепенно занимают плюсисты.
А как бы все таки хотелось от вас узнать что значит «работать».
А еще пожалуйста расскажите мне как именно вы «работаете».
Работать — значит решать задачи в предметной области. Арифметика указателей никаким боком к предметной области не относится, кроме системных вещей и драйверов. Но там есть Си — куда более грамотный для этой задачи язык.
Эх, писал я в начале про субъективизм. Предметная область у каждого своя. Мой друг на Си успешно программирует микроконтроллеры например. А есть группа людей, которая создает приложения на C++ быстрей, чем на C#, при этом говоря, что C# говно. Не надо лезть в чужую область, одевая кепку с надписью «эксперт».

P.S. Программисты Хабра понимают «танцы с бубном» — буквально.


Микроконтроллеры уже не те пошли
В них вебсервера встраивают порой!
> Мой друг на Си успешно программирует микроконтроллеры например.

К сям — никаких претензий, он для таких вещей отлично подходит.

> А есть группа людей, которая создает приложения на C++ быстрей, чем на C#, при этом говоря, что C# говно.

Если большая часть кода пишется кодогенератором — то верю, но кодогенераторы есть для любого языка.

Ты можешь объяснить — что дает Си++, чего не может дать другой язык? Только не надо про скорость — это не актуально.
что дают плюсы?
давайте разберем по полочкам:
1. кроссовость. ДотНет сразу идет лесом. Ява мне лично не нравится громоздкостью синтаксиса (одно то что там нельзя фигурные скобки у коллекций использовать или операторы у своих классов переопределить уже делает код больше и менее понятным) и тем что нужна вирт-машина. Интерпретируемые языки все-таки очень проигрывают по скорости компилируемым, да и в случае закрытых разработок интерпретируемые языки совсем не вариант.
2. мощный шаблонизатор. Да, в Яве и дотНете тоже есть шаблоны (может и еще где-то, я не в курсе), но они не дотягивают до приплюснутых.
3. лаконичность синтаксиса. дотНет где-то рядом, Ява очень далеко, интерпретируемые языки (я имею в виду руби и питон в основном, если что) тоже лаконичны, но не все можно сделать на них (см. п.1).
4. Скорость работы (да-да, я видел вашу приписку). Насколько я знаю, из широко-используемых языков системы реального времени возможны только на сях.
5. Чистый субъективизм в виде личных пристрастий. Да, это тоже немаловажная причина.
> 1. кроссовость. ДотНет сразу идет лесом.

См. Mono.
К тому же, настоящей кроссплатформенности нету — даже код, произведенный под одну платформу двумя разными компиляторами за разумное время работать друг с другом не заставишь — потому что в стандарте Си++ не прописан ABI и name mangling.

> Интерпретируемые языки все-таки очень проигрывают по скорости компилируемым

Ни один вменяемый капиталист не будет тратить человекочасы на ускорение кода, который работает менее 10% времени работы программы. Можно смело пожертвовать 20% скорости выполнения ради скорости разработки — никто ничего не заметит. Критичные к скорости части всегда можно переписать на Сях.

> да и в случае закрытых разработок интерпретируемые языки совсем не вариант.

Есть куча других компилируемых языков.

> мощный шаблонизатор

Это тебе так кажется, ты лисповых макр не знаешь.

> лаконичность синтаксиса

С функциональными языками ни в какое сравнение не идет. Даже не совсем функциональный лисп делает Си++ и в хвост и в гриву.

> Скорость работы. Насколько я знаю, из широко-используемых языков системы реального времени возможны только на сях.

См. Forth.
К тому же, риалаймовость — заслуга не столько софта, сколько железа.

> Чистый субъективизм в виде личных пристрастий. Да, это тоже немаловажная причина.

Нет. Единственный значимый критерий выбора языка — степень адекватности его качеств и возможностей поставленной задаче.
> См. Mono.
Даже не смешно, это далеко от нормальной кроссовости. Плюс насколько мне известно под БСД есть проблемы с моно. Под макосью его вроде вообще нет ;)

> К тому же, настоящей кроссплатформенности нету — даже код, произведенный под
> одну платформу двумя разными компиляторами за разумное время работать друг с
> другом не заставишь
странно, но почему то у меня никогда особых проблем с кроссовостью (PC-Windows/SPARC-Linux) не возникало.

> Ни один вменяемый капиталист не будет тратить человекочасы на ускорение кода,
> который работает менее 10% времени работы программы. Можно смело пожертвовать
> 20% скорости выполнения ради скорости разработки — никто ничего не заметит.
> Критичные к скорости части всегда можно переписать на Сях.
Ткните меня носом в хоть один высоконагруженный серверный код, в котором критические куски это 10%.

> Есть куча других компилируемых языков.
Из мейнстрима? без виртуальных машин (или их подобия как в дотнете)? и какие же?

> Это тебе так кажется, ты лисповых макр не знаешь
не спорю, не знаю;) но лисп все таки не язык общего назначения.

> С функциональными языками ни в какое сравнение не идет.
Опять же функциональные языки не являются языками общего назначения. В последнее время подвижки к этому есть, но пока что небольшие.

> См. Forth.
какой процент его применения? что-то мне подсказывает что это язык для очень узкого круга.

> К тому же, риалаймовость — заслуга не столько софта, сколько железа.
Софта тоже. На нериалтайм операционке не важно с каким железом риалтайм процесс не сделать.

> Нет. Единственный значимый критерий выбора языка — степень адекватности его
> качеств и возможностей поставленной задаче.
Опять же волшебное и так набившее всем оскомину сочетание «языки общего назначения». Ключевое слово общего. Значит подходящие под большинство задач. Если честно я еще не видел ни одного прикладного приложения (веб, где свои языки и всякие хитрые научные процессы, где фортран в расчет не берем), где плюсы, либо чистый си не был бы адекватен
> Даже не смешно, это далеко от нормальной кроссовости. Плюс насколько мне известно под БСД есть проблемы с моно. Под макосью его вроде вообще нет ;)

В перспективе — будет. Хотя лично я считаю, что моно не нужен — вполне себе кошерный RAD получается из Python + Glade/QT.

странно, но почему то у меня никогда особых проблем с кроссовостью (PC-Windows/SPARC-Linux) не возникало.

Какой компилятор?

> не спорю, не знаю;) но лисп все таки не язык общего назначения.

Это еще почему? Он вполне умеет все, что умеет Си, и даже больше.

> какой процент его применения? что-то мне подсказывает что это язык для очень узкого круга.

А какая разница? Если язык дает мне преимущество в скорости разработки и уровня вводимых абстракций — он достоин того, чтобы его выучить, независимо от его популярности. Которая, кстати — ни разу не аргумент: вон, Дима Билан тоже популярный ;).

> Софта тоже. На нериалтайм операционке не важно с каким железом риалтайм процесс не сделать.

Здесь прекрасно чувствует себя Си.

> Опять же волшебное и так набившее всем оскомину сочетание «языки общего назначения». Ключевое слово общего.

Не лучше ли использовать специализированный язык для каждой задачи?

> Значит подходящие под большинство задач.

Нет, это значит «умеющий делать всего по чуть-чуть, но ничего толком» =).

> Если честно я еще не видел ни одного прикладного приложения (веб, где свои языки и всякие хитрые научные процессы, где фортран в расчет не берем), где плюсы, либо чистый си не был бы адекватен

Я, скорее, не видел ни одной области, где он был бы к месту — всегда есть лучший выбор.
Си — предназначенный чисто для системы и драйверов язык, к нему — никаких претензий.
Плюсы же пытаются выглядеть высокоуровневыми, но получается фигово: те вещи, которые гармонично смотрелись в Си (в его нише) в плюсах только мешают. Я говорю о той же арифметике указателей, почти ручному управлению памятью (GC там нету!), страшную систему типов (которая избыточна и неортогональна), темплейты (синтаксис языка которых не изоморфен основному коду и из него нельзя пользоваться всеми возможностями языка), отсутствие интроспекции, примитивное метапрограммирования (из-за все тех-же темплейтов) — это лишь то, что мешает лично мне.
я так чувствую мы щас по второму кругу пойдем;) но в общем у вас все свелось к тому что есть куча языков, каждый из которых лучше чем-то чем плюсы и что вам лично в плюсах куча всего не нравится. Хотя сами меня убеждали что субъективность не аргумент (да, если что пункт с субъективностью был приведен специально, чтобы вы попали в эту ловушку).

з.ы. компиляторы были: винда — мсвц 6.какой-то-там, линух — гцц версии не помню

з.з.ы. по поводу непополярных языков. Может они чем то и хороши, но писать на них постоянно нереально, так как поддерживать этот код смогут только несколько человек, что не есть правильно.
> я так чувствую мы щас по второму кругу пойдем;) но в общем у вас все свелось к тому что есть куча языков, каждый из которых лучше чем-то чем плюсы и что вам лично в плюсах куча всего не нравится. Хотя сами меня убеждали что субъективность не аргумент (да, если что пункт с субъективностью был приведен специально, чтобы вы попали в эту ловушку).

Дык недостатки-то объективные, я про сказал те, которые меня больше всего раздражают.

> компиляторы были: винда — мсвц 6.какой-то-там, линух — гцц версии не помню

Линковать с чем-нибудь пробовал?

> з.з.ы. по поводу непополярных языков. Может они чем то и хороши, но писать на них постоянно нереально, так как поддерживать этот код смогут только несколько человек, что не есть правильно.

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

Вот еще ссылка интересная, полезно прочитать:
yosefk.com/c++fqa/defective.html#defect-7
и почему мне кажется что такой список можно написать практически про любой язык?;) А по поводу вашего вопроса и линковки… пробовал, но линковали мы только с тем же что собиралось тем же компилером… в оборонке особо не пошалишь с различными компиляторами;)

По поводу субьективности. Таки субьективно, ибо например мне очень помогает то что нет ГЦ, это меня очень радует и дает уверенность в том что где я данные оставил там они и останутся и никто их не тронет никогда.

По поводу поддержки и въезда в проект/язык. Таки в проект въехать проще чем в новый язык (особенно если он например функциональный, а человек до этого не сталкивался с функциональными языками).
> и почему мне кажется что такой список можно написать практически про любой язык?;)

В целом — да, чтолько список для конкретного языка будет сильно меньше.
Практически в каждом есть свои раздражающие косяки, некоторые из которых возникают оттого, что его применяют не по назначемию. Си++ же пытаются воткнуть куда ни попадя, вместо то, чтобы заюзать более подходящий язык.

> По поводу субьективности. Таки субьективно, ибо например мне очень помогает то что нет ГЦ, это меня очень радует и дает уверенность в том что где я данные оставил там они и останутся и никто их не тронет никогда.

Можешь привести примеры, когда ГЦ хоть раз так жестоко сфейлил (потерял данные)?

> По поводу поддержки и въезда в проект/язык. Таки в проект въехать проще чем в новый язык (особенно если он например функциональный, а человек до этого не сталкивался с функциональными языками).

Это тебе из-за плюсового выверта мозга кажется, что язык должен быть сложен. В качестве доказательства распечатай грамматику Си++ и Лиспа — а потом сравни их по длине. Будешь много думать.
Применяя специализированный язык — ты вводишь синтаксическую абстракцию (синтаксис прикрутить можно любой, какой тебе больше нравится), а логику приложения заключаешь в семантику языка. То же самое, только на более низком уровне ты делаешь, вводя новые объекты на Си++.
вообще то у плюсов система типов не изыточна а совсем даже наоборот, не полна. иди перечитай скулевский сиплюсплюссрач, а то ты стал забывать основные тезисы, лол

зы: луговский хотябы в предмете разбирался, но когда 20-летний товарищ вещает про лиспы и про «я не встречал в своей жизни проектов» — это внушает, да.
Да ладно? Сколькими способами можно записать на плюсах строку? Двумя:
std::string и const char *
Сколькими способами можно задать массив? Как минимум двумя: через new int[5] и через int[5].
И после этого неизбыточная?

Я уже не говорю, во что превращается отладка после сообщения:
std::map
Таки непереусложненная?

Луговский про это вообще не говорил, кстати.
потому что извините но это бред. Стд:: стринг и массив чаров это разные вещи… абсолютно. Если вы этого не понимаете, то это ваше дело, но тогда не наезжайте на плюсы.

По поводу массива. Опять же это разные вещи. Или вы еще маллок вспомните (сразу прежде чем вспомнили скажу что маллок нужен тогда, когда нужен реаллок, в остальных случаях нью быстрее и лучше)?
> потому что извините но это бред. Стд:: стринг и массив чаров это разные вещи… абсолютно. Если вы этого не понимаете, то это ваше дело, но тогда не наезжайте на плюсы.

Почему другие языки без этого обходятся? И, кстати, не надо «про разные вещи» — std::string определен как контейнер для char (или const char — не помню).

> По поводу массива. Опять же это разные вещи. Или вы еще маллок вспомните (сразу прежде чем вспомнили скажу что маллок нужен тогда, когда нужен реаллок, в остальных случаях нью быстрее и лучше)?

Я про маллок молчал между прочим — +1 к способу задаиню массива.
Вопрос остается: почему другие языки не плодят лишние сущности, которые еще нужно учиться применять? И после этого люди говорят, что им легче писать на Си++, чем выучить нормальный язык?
лютый бред. char* по сути своей в плюсах юзается для вызова апи. вот его роль. ибо язык с++ работает не со средой окружения, а с реальной операционкой, в которой строки представьте себе, так же терминированные нулем массивы байтов. была бы операционка объектная — не было бы в плюсах этого раритета. внутри программы адекватные программисты используют std::string. по поводу убогих шаблонов — это вы жжоте. почитайте александреску, на крайняк посмотрите возможности и реализацию boost::binder, очень красивая штука.

по поводу объявления массивов — сугубо субъективная вещь. вас никто не заставляет объявлять неугодным вам способом. так же никто не заставляет скобки ставить по суровому закону.

по поводу где нужен с++ — посмотрите на все браузеры. хром, опера, фф, ие. плееры. резидентные программы. антивирусы. ибо там критерий памяти и скорости таки важен. остальное лень комментить. но если есть желание — могу продолжить.
* конечно же boost::bind. уже засыпаю
> лютый бред

Определение std::string посмотри — внутри там тот же массив чаров.

> язык с++ работает не со средой окружения, а с реальной операционкой

Если я правильно догадался, что ты имеешь ввиду под реальной операционкой — то это нифига не достоинство, а совсем даже недостаток.

> внутри программы адекватные программисты используют std::string.

Если мне нужна максимальная производительность, то std и boost идут лесом, также как и ООП. Что остается? Голый Си, с темплейтами разве что. Если не нужна — то я выберу более выразительный язык, чем Си++.

> по поводу убогих шаблонов — это вы жжоте. почитайте александреску, на крайняк посмотрите возможности и реализацию boost::binder, очень красивая штука.

Напиши что-нибудь похожее на Лисповский loop, не используя внешних препроцессоров — тогда я признаю, что это мощная штука.

> по поводу объявления массивов — сугубо субъективная вещь. вас никто не заставляет объявлять неугодным вам способом. так же никто не заставляет скобки ставить по суровому закону.

Нет, если мне надо определить длину массива в рантайме, то хочешь-не хочешь придется использовать new.

> по поводу где нужен с++ — посмотрите на все браузеры. хром, опера, фф, ие. плееры. резидентные программы. антивирусы. ибо там критерий памяти и скорости таки важен.

Не важен. Мегагерцы и мегабайты дешевле человекочасов. Единственное место где производительность критична — реал-таймовый софт и 3D-рендереринг времени выполнения (читай, игрушки).
Потому что большую часть работы программа либо ожидает системный вызов, либо ожидает ввод-вывод. Тратить кучу сил на ускорение работы кода, который работает 10% времени выполнения программы — нецелесообразно.
И, кстати, про память. Отсутствие GC приводит к тому, что тот же файрфокс после часа работы легко жрет 400 мегов памяти.

> остальное лень комментить. но если есть желание — могу продолжить.

Да как хочешь.
и какая разница, как реализован std::string? вам слово инкапсуляция о чем нибудь говорит?

про ос — если бы это было минусом, с++ бы никто не использовал.

лисп ну совсем не к месту. напишите тогда на лиспе браузер, а потом поговорим о его возможностях и слабости препроцессора с++. ок?

boost::bind не использует внешних препроцессоров. все сделано на средствах языка.

потеря производительности от ооп вам известна? будете смеяться, но настолько незначительна, что можно все сделать через ооп и виртуальные функции, и это будет работать быстрее и жрать меньше памяти, чем дотнет приложение с одним классом. мало того std::string дает ускорение за счет хранения длины строки в переменной счетчика, вместо постоянно расчета strlen. должны же знать, что алгоритмическая оптимизация решает в пределах языка(сравнивать алгоритмическую в с++ и дотнете нелогично)

про нью — да. но проблема не в нью. проблема в отслеживании жизненого цикла объектов. это язык который требует внимания, или использования boost::shared_ptr, которые вошли в новый стандарт stl.

фф — большой вопрос почему жрет стока памяти. у меня например после 8 суток — 167мб. но утечки памяти конечно не исключены. это плата за эффективность использования железа.
> и какая разница, как реализован std::string? вам слово инкапсуляция о чем нибудь говорит?

Да про это вообще речи не было. Ты заявил, что std::string и массив чаров — разные вещи, а теперь выяснилось, первые включает в себя второй.

> про ос — если бы это было минусом, с++ бы никто не использовал.

В категории «ширпотреб» качества товара никак не влияют на его популярность: люди жрут в макдаках и слушают Диму Билана несмотря на то, что это говно.
И, кстати, Си++ работает с ОС на общих основаниях — через системные вызовы.

> лисп ну совсем не к месту. напишите тогда на лиспе браузер, а потом поговорим о его возможностях и слабости препроцессора с++. ок?

Во первых — предъява не катит, мы сравниваем возможности языков в метапрограммировании и их инструментарий времени компиляции.
Во вторых — нет никаких причин, почему этого нельзя сделать.
Некоторые вещи точно будут сделаны в разы быстрее и проще чем на плюсах: например, генератор HTTP-запросов/парсер хидеров.
Я, правда, пока смутно представляю, как рендерер писать — но надо просто сесть и разобраться.

> boost::bind не использует внешних препроцессоров. все сделано на средствах языка.

Вместо того, чтобы использовать нормальный язык, сообщество строит костыли, пытаясь вытянуть Си++ до нормального. В человеческих языках в подобной либе не возникнет необходимости.

Вот почитай, что коллега пишет:

> потеря производительности от ооп вам известна? будете смеяться, но настолько незначительна, что можно все сделать через ооп и виртуальные функции, и это будет работать быстрее и жрать меньше памяти, чем дотнет приложение с одним классом. мало того std::string дает ускорение за счет хранения длины строки в переменной счетчика, вместо постоянно расчета strlen. должны же знать, что алгоритмическая оптимизация решает в пределах языка(сравнивать алгоритмическую в с++ и дотнете нелогично)

Сегодня-завтра выберу время — налабаю простенький бенч. Надо проверить.

> про нью — да. но проблема не в нью. проблема в отслеживании жизненого цикла объектов. это язык который требует внимания, или использования boost::shared_ptr, которые вошли в новый стандарт stl.

Опять-таки вместо дела — производство костылей. GC есть в любом современном языке.

> фф — большой вопрос почему жрет стока памяти. у меня например после 8 суток — 167мб. но утечки памяти конечно не исключены. это плата за эффективность использования железа.

Это давно было, сейчас протечки заткнули, да и не пользуюсь я им уже.
> Да про это вообще речи не было. Ты заявил, что std::string и массив чаров — разные вещи, а теперь выяснилось, первые включает в себя второй.

сори, забыл глянуть в ваш профиль. типичный троль. в дотнете в основе класса строки лежит такой же массив байтов, ака char*. ибо с системой не поспоришь и вызывать апи придется.

> И, кстати, Си++ работает с ОС на общих основаниях — через системные вызовы.

иии?

> Опять-таки вместо дела — производство костылей. GC есть в любом современном языке.

GC — это те же костыли. Чтобы не делать ручное управление временем жизни объектов. Обоснуйте, чем шэйред птр хуже? Он освобождает память при конце жизни объекта, а GC память чистит далеко не сразу. Или же приходится делать ручное управление GC.collect() Что есть признак кривизны.

Вобщем сплошной субъективизм — shared_ptr плохо, потому что он не GC. char* плохо, потому что это еще один вариант строки.

> сори, забыл глянуть в ваш профиль. типичный троль.

Кто из нас только что солгал?

> в дотнете в основе класса строки лежит такой же массив байтов, ака char*. ибо с системой не поспоришь и вызывать апи придется.

И? Тоже «разные вещи»?

> иии?

Что ты имел ввиду, говоря «напрямую»?

> GC — это те же костыли. Чтобы не делать ручное управление временем жизни объектов.

Человек никогда не будет работать лучше GC. Даже если и называть его костылями — это хорошие костыли, существование которых почти всегда незаметно.

> Обоснуйте, чем шэйред птр хуже?

Как минимум: а) это лишняя сущность, которая работает непрозрачно для пользователя; б)типично плюсовая приблуда — ни в одном из знакомых мне языков этого нет.
Зачем оно нужно, если есть проверенная временем концепция GC?

> GC память чистит далеко не сразу.

GC удаляет объект, как только счетчик ссылок для объекта равен нулю (плюс механизмы разрешения дедлоков). Что характерно — во многих случаях про GC можно вообще не вспоминать и не задумываться, что он есть.

> фееричный бред. для разного рода задач в любых языках есть либы. если по вашему наличие таких либ — зло, то вы явно нулевой программист.

В нормальных языках либы решают прикладные задачи — db abstraction, ORM, рисование/управление интерфейсом и т.д. Пойди, поищи либу типа Boost в Питоне или Жабе.

> вам видится создание для каждой задачи отдельного языка? язык для создания браузеров, язык рендеринга страниц, язык исполнения джаваскриптов, язык для графики, язык для работы с файлами? посмотрю я на такую фирму, в которой работает туева хуча таких умельцев. перспектива конечно радужная для программиста — максимально упростить себе работу. но в нее верят разве что дети.

Введение нового языка — примерно то же самое, что введение нового объекта в ООП. И цель точно такая же — введение новой абстракции, скрытие ненужных в рамках задачи механизмов и сущностей.
Почитай про Laguage-oriented programming — в английской википедии ссылки хорошие есть.
Ясное дело, применяется она только тогда, когда это целесообразно (если интересно — завтра кину ссылки на работы, где про это пишут). Нет универсального языка, нет универсальной парадигмы.
> И? Тоже «разные вещи»?
я просто не понимаю, что вы хотите доказать? std::string внутри содержит массив байтов. String в дотнете так же содержит массив байтов символов. При этом std::string как бы зло, а String как бы не зло. вы уж решите, вы или объективно обсуждаете проблему и оба класса зло\добро, или субъективно, но тогда прекращаете флеймить на тему множества строк.

> Человек никогда не будет работать лучше GC
для человека работа с shared_ptr прозрачна до уровня обычных указателей. не надо придумывать сложности там, где их нет. вы хоть раз использовали их? только честно.

> Зачем оно нужно, если есть проверенная временем концепция GC?
если уж так хочется GC в c++, он в новой версии стандарта будет. который C++1x видимо. Суть в том что это не спасет от управления объектами файлов\процессов\хэндлов\етц. Поэтому как ни крути но GC это не панацея. Спасает паттерн RIIA, который как раз таки очень хорошо подходит для shared_ptr и объектов-контейнеров. Так что для безопасного кодирования все равно придется порождать новые сущности.

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

> я просто не понимаю, что вы хотите доказать? std::string внутри содержит массив байтов. String в дотнете так же содержит массив байтов символов. При этом std::string как бы зло, а String как бы не зло. вы уж решите, вы или объективно обсуждаете проблему и оба класса зло\добро, или субъективно, но тогда прекращаете флеймить на тему множества строк.

Не надо врать, я нигде не говорил что «std::string зло». Я вообще таких формулировок избегаю.
Разговор был о том, что иметь 2 способа описания одной сущность идеологически неверно и есть признак бардака.

> для человека работа с shared_ptr прозрачна до уровня обычных указателей. не надо придумывать сложности там, где их нет. вы хоть раз использовали их? только честно.

Естественно нет, я Си/Си++ использую только как макроассемблер — там все он не нужен, обычных достаточно. Но читал про него.
И я уже высказывался по поводу арифметики указателей — она к месту только при работе с железом, в остальных случаях она только мешает.

Кстати, насчет того, что std::string быстрее const char* ты опять соврал:
narod.ru/disk/9079211000/cpp-profile1.tar.gz.html
narod.ru/disk/9079225000/cpp-profile2.tar.gz.html

> Суть в том что это не спасет от управления объектами файлов\процессов\хэндлов\етц.

От них спасет использование нормального языка.

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

Я где-нибудь писал, что «либы — зло»?
Я спрашивал, есть ли в Питоне что-либо, похожее на Boost? Подозреваю, что нету, ибо нет нужды в нем.

> дык там нет как таковых указателей с++. естественно там нет и умных указателей.

Для прикладных программ они не нужны. Никакие — ни умные, ни вообще.

> для вызова системной функции я выполняю вызов экспортируемой той же kernel32.dll функции, а при желании можно вообще вызвать функцию через sysenter руками, мимо всякой вм

Хорошо. Зачем это может понадобится?
Разговор был о том, что иметь 2 способа описания одной сущность идеологически неверно и есть признак бардака.

Это признак слабоумия, если две сущности сводят с ума. Вот сколько я слышал жалоб на плюсы, но чтото первый раз слышу, что разные типы строк — это бардак…

>И я уже высказывался по поводу арифметики указателей — она к месту только при работе с железом, в остальных случаях она только мешает.

омг, ну если не использовал смарт поинтеры, то не пори чушь. о какой арифметике ты говоришь? опыт использования с++ судя по всем этим словам — книжка Освой с++ за 24 часа.

по поводу string, перечитай мой коммент. я говорил о скорости определения длины строки. ты же зачем то делаешь вывод в консоль, да еще через заднее место [], вместо c_str(). мама не учила, что тестировать скорость работы вызывая лишние прерывания — очень тупая затея?
Вообще теперь понятно почему так против плюсов. Судя по коду ты понятия не имеешь об оптимизации. Если нужно много работать символами строки и это давит на скорость — string приводят к char* и используют прямую адресацию. Если нужна безопасность памяти ценой скорости — используют [] в string, который проверяет границы массива. Но тебе этого видимо не понять. Или char* или string. Сразу два — слишком много =)

> Это признак слабоумия, если две сущности сводят с ума. Вот сколько я слышал жалоб на плюсы, но чтото первый раз слышу, что разные типы строк — это бардак…

Ты определись, разные они или нет.

> омг, ну если не использовал смарт поинтеры, то не пори чушь. о какой арифметике ты говоришь?

Бля. Как можно объяснить человеку, всю жизнь жрущего сено, что апельсины вкусные?
В прикладном софте не нужны указатели. Вообще.

> опыт использования с++ судя по всем этим словам — книжка Освой с++ за 24 часа.

Да я Плюсы практически не использую — меня Си устраивает.

> по поводу string, перечитай мой коммент. я говорил о скорости определения длины строки. ты же зачем то делаешь вывод в консоль, да еще через заднее место [], вместо c_str(). мама не учила, что тестировать скорость работы вызывая лишние прерывания — очень тупая затея?

У string по любому вызовов больше, можно не париться.

> Вообще теперь понятно почему так против плюсов. Судя по коду ты понятия не имеешь об оптимизации. Если нужно много работать символами строки и это давит на скорость — string приводят к char* и используют прямую адресацию. Если нужна безопасность памяти ценой скорости — используют [] в string, который проверяет границы массива.

Да я не ставил себе цель оптимизировать ничего.

> Но тебе этого видимо не понять. Или char* или string. Сразу два — слишком много =)

Да нахрен мне string? В сях есть привычный char, если уж так нужна скорость, а там где не нужна — пишется на питоне или Лиспе. Получится и быстрее и качественнее.
Да и вообще — предполагалось проверить скорость доступа к отдельным символам, а не ко всей строке целиком.
кароч скучная дискуссия. я думал ты хоть немного знаешь с++… а оказалось уровень «форумчанина-холиварщика». Начитался тезисов про «арифметику указателей». Вот я за хз сколько лет в крупных проектах ниразу не пользовался этой страшной арифметикой. И давно не видел ее у адекватных программистов. Умные указатели, немного просвящу, используются для автоматического контроля времени жизни динамически создаваемого объекта, плюс для упрощения контроля ссылок на него, чтобы можно было передавать в параметрах эти объекты и не заботица о моменте, когда все классы\методы прекратят пользоваться объектом. Каким нада быть деревом, чтобы к умному указателю приписать арифметику указателей — я думал такого не бывает. Оказывается, ошибся.
Про string и char — string инкапсулирует управление памятью для char* и дает сервисные методы. Хочешь сравнить скорость — я тебе сказал что сделай. Замени string[] на string.c_str()[] и увеличсть длину строки до 500 символов и посмотри на скорость.
И на последок — не лезь в разговор о теме, о которой не имеешь представления. Программируешь на.нет — программируй. Но жечь тупизной про с++ — лучше не позорься. Это проканает на школярных форумах, где дети кроме хеллоуворлда ниче не пишут.
за сим прекращаю тратить время, ибо нет смысла спорить с человеком, который не понимает, о чем спорит.
> Вот я за хз сколько лет в крупных проектах ниразу не пользовался этой страшной арифметикой. И давно не видел ее у адекватных программистов. Умные указатели, немного просвящу, используются для автоматического контроля времени жизни динамически создаваемого объекта, плюс для упрощения контроля ссылок на него,

Я знаю.

> Про string и char — string инкапсулирует управление памятью для char* и дает сервисные методы. Хочешь сравнить скорость — я тебе сказал что сделай. Замени string[] на string.c_str()[] и увеличсть длину строки до 500 символов и посмотри на скорость.

Я знаю.

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

а пролибы — ну чистеший профанизм. к работе либы имеют прямое отношение. на вики зайди и почитай про либы для питона. горепрограммист знаток. они явно пришли из с++, а значит питон гуано. следуй своей логике и делай как велит ум — выбрось питон, выбрось все, и иди за новым рубанком.
Меня не покидает ощущение, что поставил себе цель меня пробесить.

Перечитывай выше до просветления, я заебался повторять одно и тоже.
что ж такое. ctrl+space постит ответ =\ случаной промажешь мимо ctrl+v и нате =\

> типично плюсовая приблуда — ни в одном из знакомых мне языков этого нет.
дык там нет как таковых указателей с++. естественно там нет и умных указателей. только отсутствие в дотнете указателей как таковых не говорит о говняности shared_ptr. надеюсь это оспаривать не будете?

>Что ты имел ввиду, говоря «напрямую»?
для вызова системной функции я выполняю вызов экспортируемой той же kernel32.dll функции, а при желании можно вообще вызвать функцию через sysenter руками, мимо всякой вм. когда вы используете в дотнете потоки ввода вывода среда окружения проверяет и переводит пути к нужному виду, проверяет все и вся. поэтому вы можете передавать встроенные объекты дотнета. в с++ вы можете передавать только те примитивы, которые способна переварить система. а она отнюдь не объектна. поэтому используются char*, LPVOID и прочее.
> В человеческих языках в подобной либе не возникнет необходимости.
фееричный бред. для разного рода задач в любых языках есть либы. если по вашему наличие таких либ — зло, то вы явно нулевой программист. вам видится создание для каждой задачи отдельного языка? язык для создания браузеров, язык рендеринга страниц, язык исполнения джаваскриптов, язык для графики, язык для работы с файлами? посмотрю я на такую фирму, в которой работает туева хуча таких умельцев. перспектива конечно радужная для программиста — максимально упростить себе работу. но в нее верят разве что дети.
От количества способов объявить переменную некоторого типа количество самих типов не увеличивается.
И действительно, string и char* потому и существуют, что имеют разное назначение.
> От количества способов объявить переменную некоторого типа количество самих типов не увеличивается.

Два перечисленных объявления массива различны по семанитке — одно статическое, другое динамическое.
К тому же, массивы — часть системы типов.
>Два перечисленных объявления массива различны по семанитке — одно статическое, другое динамическое.

Это я и без вас знаю. И что теперь?
Неужели тебя это не смущает?
Есть некоторые подозрения. Но до глубины осмыслить проблему пока не удаётся :)
Читай здесь:
yosefk.com/c++fqa/defective.html#defect-7
НЛО прилетело и опубликовало эту надпись здесь
Если так экономят — почему бы заюзать Форт?
НЛО прилетело и опубликовало эту надпись здесь
Против Сей я ничего против не имею. Вполне себе высокоуровневый портабельный ассемблер.
Я говорил лишь про Си++ — причин ненавидеть его масса.

Неужели под все эти железки нет компиляторов для нормальных языков?
ВЫ хотите сказать что Асм сейчас не востребован?
НЛО прилетело и опубликовало эту надпись здесь
Ну и нахуя он нужен?
НЛО прилетело и опубликовало эту надпись здесь
Я спрашиваю, нахера он нужен в разработке?
НЛО прилетело и опубликовало эту надпись здесь
Вякнул — и в песок?
Реальную задачу назовешь, оптимизатор?
НЛО прилетело и опубликовало эту надпись здесь
Лол. Ответь на 2 вопроса.

1. Что ты собрался оптимизировать астмом, если большинство промышленных языков компилятся в байт-код?
2. Не проще ли найти нормальный компилятор для всех остальных языков, чем парится самому? Человек лучше компилятора никогда не сделает.
назову.
приостановить исполнение программы до прихода любого прерывания.
простите, это не реальная задача.))
Это ваше условия — поставленное для выполнения ВАШЕГО высказывания.)
Место асм-а на текущий момент практически нулевое, дажи шсы- на нем уже не пишут, а к мк уже есть различные SDK
Intel IPP например. Библиотека написанная преимущественно на ассемблере. Какая бы новейшая архитектура не была, для полного использования ее возможностей вам понадобится ассемблер.
Сильно сомневаюсь, что она написана чисто на Асме. Она тогда бы стоила раз в 10 дороже.
Операционка к аппаратным прерываниям тебя близко не подпустит, а для работы с программными есть системные вызовы, которые отлично дергаются на любом языке. Опять таки, не катит.
еще один адепт, обчитавшийся луговского?
Похоже. Все до удивления одинаковы. У всех до удивления это со временем проходит.
Ad hominem оставьте при себе, пожалуйста.

Лучше скажите что-нибудь по теме.
большая часть поста товарища nikitad — суть личное мнение, что по теме-то говорить? Языки он за два дня учит, ньюансы как орехи колет. Man, the shit is SHIT.
> большая часть поста товарища nikitad — суть личное мнение, что по теме-то говорить?

Где это личное мнение?

> Языки он за два дня учит

А что тут такого? Чем фундаментально различаются C# и Java? Си++ от Си большее количество программистов тоже не отличают (то есть пишут на Си++ как на Си с классами).

Взять тот же Питон — после JS его очень просто понять (синтаксис + семантика), хотя The Python Way постигается с трудом. В общем виде: чем больше языков знаешь, тем быстрее можешь изучить новые. «Изучить» тут значит не «познать все тонкости и аспекты», а «научиться читать и понимать программы». Языки рассматриваем не все, а из одной парадигмы (императивщина, хотя и Питон, и JS поддерживают ФП).
> Где это личное мнение?

«Это — не программирование, это — говно, работа для обезьяны.», «Танцы с бубном — это не про программирование.», «Нахер C++. Работать надо, а не с указателями трахаться.», «Лет 5 назад были ебанашки, всерьез изучавшие ассемблер, сейчас их место постепенно занимают плюсисты.»

> А что тут такого? Чем фундаментально различаются C# и Java?

скажи мне, какой смысл ты вкладываешь в «понять» и «изучить» язык программирования? С какой целью это делать?
> Танцы с бубном — это не про программирование.

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

> Нахер C++. Работать надо, а не с указателями трахаться

Так и есть, бгг. Работать надо, а Си++ оставить для того (узкого) круга задач, где его применение оправдано. Этот круг еще предстоит найти. :)

> скажи мне, какой смысл ты вкладываешь в «понять» и «изучить» язык программирования?

Уже изложил ведь. :) Читай выше.

> С какой целью это делать?

С целью получить выгоду для себя.
> Работать надо, а Си++ оставить для того (узкого) круга задач, где его применение оправдано. Этот круг еще предстоит найти. :)

разве узкого?

вот перебираю софт на своей машине: опера (с++), the bat (delphi), Visual Studio (c++), MS Office (C++), qip (Delphi / C++?) и т.д. большинство на с++ написано.
> Другое дело, что в «на практике» часто получается
да что ж такое, не везет мне сегодня с комментариями…

> Другое дело, что в «на практике» часто получается

да, на практике часто получается совсем иначе. Отладка многопоточных приложений, например. Отлавливание других нетривиальных багов, например.

> Так и есть, бгг. Работать надо, а Си++ оставить для того (узкого) круга задач, где его применение оправдано.

я могу сказать точно так же — «Нахер Lisp. Работать надо, а не со списками трахаться» (хотя я в свое время хорошо с ними наэцсамое). Да, я понимаю, какие преимущества дает Lisp как ЯП общего назначения; да, я понимаю, какие преимущества дают Erlang и Prolog как ЯП специального назначения; но в большинстве задач эти преимущества сомнительны перед лицом недостатков — недостаточной библиотечной базы, недостаточной производительности, недостаточной пользовательской базы и т.д.

Есть ряд задач, которые куда как изящнее и быстрее решаются на не-мейнстримовых ЯП, но, увы, не всем выпадают такие задачи, а мы тут говорим о большинстве.

> С целью получить выгоду для себя.

Ты не понял. Выгоду мы все имели (простите за выражение). Я имею в виду — ты для работы их изучаешь? Т.е. конкретная ситуация — ты приходишь на работу, тебе дают задачу X, ты «внезапно» осознаешь, что эту задачу нужно решать на языке MHP (Metaphorical Holophone Processing) и говоришь работодателю — я буду тут два месяца изучать MHP, т.к. с ним я решу задачу X, поэтому пока мне задач других не давайте. Как ты думаешь, каким взглядом на тебя посмотрит работодатель?

Про изучение языка за два дня и технологии за две недели, прости, это смешно. Я рискну предположить, что в реальном окружении человек просто не работал. Ту же джаву-быдло-быдло-быдло познать — времени надо огого, пока изучишь библиотеки, пока научишься их применять по назначению, пока изучишь процесс программирования и взаимодействия команды — это не один месяц.

Да, я понимаю, что есть Луговской и собственный бизнес в Великобритании, но мы же, увы, говорим о большинстве? А реальность такова, какова она есть.
> недостаточной библиотечной базы

Чего тебе не хватает? Если чего-то нету, то можно сделать байндинги; на Си такое по любому есть.

> недостаточной производительности

Во первых — неактуально, во вторых Лисп всего в 2 раза медленнее Си++, а в некоторых задачах — быстрее. Хотя народ юзает еще более тормозную Джаву и не жалуется.
Хацкель — да, тормозной, насколько я слышал. Сам пока не смотрел. Закончу диплом — сяду за лямбда исчисление.

> недостаточной пользовательской базы

Если ведущий программист говорит, что такую-то задачу можно решить быстрее на языке Х — то можно так или иначе заставить кодеров его выучить. Или нанять новых.

> Т.е. конкретная ситуация — ты приходишь на работу, тебе дают задачу X, ты «внезапно» осознаешь, что эту задачу нужно решать на языке MHP (Metaphorical Holophone Processing) и говоришь работодателю — я буду тут два месяца изучать MHP, т.к. с ним я решу задачу X, поэтому пока мне задач других не давайте. Как ты думаешь, каким взглядом на тебя посмотрит работодатель?

Он пошлет тебя нахрен, и будет прав. Этот пример некорректен — чтобы заявить, что «эту задачу нужно решать на языке MHP (Metaphorical Holophone Processing)» — ты УЖЕ должен его знать. Иначе это — голословное утверждение, а ты должен свой выбор обосновать.
То есть, языки учишь в свободное время, а на работе по возможности применяешь то, что знаешь.

> Ту же джаву-быдло-быдло-быдло познать — времени надо огого,

Ну, я бы не сказал. Буду изучать Джаву — проверю.
К тому же, я лишь говорил, что изучил Питон за два дня, а он так себе язычок, не сложный.

> пока изучишь библиотеки, пока научишься их применять по назначению,

Все библиотеки не изучишь, а что понадобиться заранее не известно, так что учить по любому, и для любого языка.
И что значит применять по назначению? Библиотека пишется для решения какой-либо задачи, и применяется когда эта задача встает.

> пока изучишь процесс программирования и взаимодействия команды.

Что имеется ввиду под «процессом программирования»?
Про взаимодействие команды — это касается любого языка программирования. И не о том речь.

> Да, я понимаю, что есть Луговской и собственный бизнес в Великобритании, но мы же, увы, говорим о большинстве?

Что ты этим хочешь сказать? Что ничего нового изучать не надо?

> А реальность такова, какова она есть.

Да я понимаю, что Си++ приходится использовать, но это не мешает мне его ненавидеть. Не надо считать меня бездумным троллем — я говорю лишь то, в чем убедился лично. И сходу отметать слова Луговского не следует — он много чего полезного рассказал. Хотя, он даже Си почему-то ненавидит — не знаю почему.
> Чего тебе не хватает? Если чего-то нету, то можно сделать байндинги; на Си такое по любому есть.

я не силен в байндингах, но скажи мне — сколько времени тебе понадобится, чтобы сделать вменяемые байндинги для библиотеки уровня, например, Qt? Насколько они будут неглючными и сколько времени понадобится для их отладки?

> Во первых — неактуально, во вторых Лисп всего в 2 раза медленнее Си++, а в некоторых задачах — быстрее. Хотя народ юзает еще более тормозную Джаву и не жалуется.
Хацкель — да, тормозной, насколько я слышал.

Ну, закрыв глаза на то, что конкретные цифры («в 2 раза») всегда должны сопровождаться конкретными исследованиями, скажу, что у Эллиота совсем другая статистика: shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=all&box=1. Насчет неактуальности — давайте не будем. Реальность всегда делает актуальными проблемы производительности.

> Ну, я бы не сказал. Буду изучать Джаву — проверю.

Не забудь библиотеки изучить и научиться применять, ок. Кроме стандартной.

> К тому же, я лишь говорил, что изучил Питон за два дня, а он так себе язычок, не сложный.

Напиши теперь на нем многопоточный веб-краулер с сериализацией результатов поиска в Oracle.

> Все библиотеки не изучишь, а что понадобиться заранее не известно, так что учить по любому, и для любого языка.

Как бы есть определенные «профили» программиста, например. J2EE-шник, например, должен знать множество технологий — EJB, Hibernate, Spring, JTA, etc. PL/SQL-щик должен знать множество пакетов под Oracle (ну там, конечно, проще). Я не знаю, но мне кажется просто смешной возможность изучить их за 2 недели.

> И что значит применять по назначению? Библиотека пишется для решения какой-либо задачи, и применяется когда эта задача встает.

За каждой серьезной библиотекой стоят определенные концепции, технологии, шаблоны, антишаблоны, идеи и заранее заложенные «правильные» способы применения. Если применять библиотеку не так, как задумали авторы — можно нарваться на неприятности (хотя бы в виде косых взглядов от коллег-разработчиков, которым пришлось твой код читать). Гранатой тоже можно в волейбол играть, но не долго.

> Что ты этим хочешь сказать? Что ничего нового изучать не надо?

Боже упаси. Я говорю лишь о том, что нужно иметь способность понимать других людей и то, что мир разнопланов и склонен к компромиссам. Не стоит так огульно называть всех джаверов «обезьянками», например, а С++ сходу посылать нахер…

> И сходу отметать слова Луговского не следует — он много чего полезного рассказал.

А я нигде и не отметал его слова. Он говорил очень правильные вещи, к которым стоит прислушиваться (чтобы для себя что-то понять, что-то новое узнать), но применять их можно только тогда, когда вокруг тебя — одни Луговские. Что не соответствует реальности, как ты понимаешь.
> я не силен в байндингах, но скажи мне — сколько времени тебе понадобится, чтобы сделать вменяемые байндинги для библиотеки уровня, например, Qt? Насколько они будут неглючными и сколько времени понадобится для их отладки?

Байндинги — это всего лишь враппер вокруг родной либы, которые написаны на драгом языке. Чтобы сделать байндинг нужно импортировать символы функции из библиотеки (они там есть — в линухе можешь сделать readelf -s ), получить базовый адрес в памяти (он один на либу, выдается ядром, а самой либе записаны смещения для символов), где она содержится и написать обертку, которая будет преобразовывать аргументы к нужному типу при вызоые и при возврате значений.
Глючат байндинги ровно в той же степени, что и сами либы — никакого сложного кода там нет, все предельно автоматизируемо.
Про автоматизацию — есть такая вещь, как SWIG — автогенератор байндингов. Таким образом сделать байндинг не есть сложно или долго.

> Ну, закрыв глаза на то, что конкретные цифры («в 2 раза») всегда должны сопровождаться конкретными исследованиями,

norvig.com/python-lisp.html
Внизу страницы.

> скажу, что у Эллиота совсем другая статистика: shootout.alioth.debian.org/gp4/benchmark.php?test=all〈=all&box=1.

shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=sbcl&lang2=gpp&box=1
Примерно то же самое.

> Напиши теперь на нем многопоточный веб-краулер с сериализацией результатов поиска в Oracle.

Согласись, ты сейчас глупость написал.

> Как бы есть определенные «профили» программиста, например. J2EE-шник, например, должен знать множество технологий — EJB, Hibernate, Spring, JTA, etc. PL/SQL-щик должен знать множество пакетов под Oracle (ну там, конечно, проще). Я не знаю, но мне кажется просто смешной возможность изучить их за 2 недели.

Проблема все та же — зная что-то одно, ты неиллюзорно рискуешь завтра начать работать за еду, ибо будущие акуальные области заранее неизвестны.
Единственный выход приобретать фундаментальные знания — чтобы такие вещи изучать как можно быстрее.

> За каждой серьезной библиотекой стоят определенные концепции, технологии, шаблоны, антишаблоны, идеи и заранее заложенные «правильные» способы применения. Если применять библиотеку не так, как задумали авторы — можно нарваться на неприятности (хотя бы в виде косых взглядов от коллег-разработчиков, которым пришлось твой код читать).

Обычно это пишется в документации/туториале — мол, так вот делать можно, а так — нельзя. Если нету в туториале — есть в литературе (например, ORM, реализуют паттерн Data Miner и примеяются так, как написано в книжке GoF).
Либы без документации — давить (кстати, в Лиспе с этим проблема — у многих либ документации нет вообще, только 2-3 примера).

> а С++ сходу посылать нахер…

Последние лет 10 мир только это и делает — сравни, как часто он использовался 10 лет назад, и сколько сейчас.

> (чтобы для себя что-то понять, что-то новое узнать)

Для себя — то есть для собственных корыстных целей?
Грязный поклеп, я еще никого здесь сосать яйца не послал.
Да и потом, со времен отжигов Луговского что-то изменилось? Те же плюсисты, те же асмщики.
ололо

>> 90 % решаемых задач на данный момент – это базы данных и web-программирование

> Феерическая херня. В любом случае, ссылку на исследование — в студию.

Феерическая херня. В любом случае, ссылку на исследование — в студию.
В чем-то правильное мнение. Зря минусуют.

Я бы оставил не тронутым.
Эх… только недавно начал уверенно чувствовать себя в разработке веб-предложений.
Конкуренция не маленькая. И это только сейчас, а что будет через год-два?
Как себя вести лучше в такой ситуации?
НЛО прилетело и опубликовало эту надпись здесь
Конкуренция в вебе будет только у кодеров (особенно быдлокодеров). Специалистов в вебе, как и в других областях действительно не хватает. Даже кодеров хороших очень мало.
И так и будет, потому как в вебе по-сути задачи такие-же по сложности как и в других областях, а проектирование систем или даже алгоритмов с учетом всех особенностей систем, с которыми этот алгоритм или система работают, задача явно не для всех.
Как и всегда — работать и совершенствоваться. Решать различные задачи, в различных предметных областях различными методами. Приходить с работы домомой и снова садиться за комп для изучения уже чего то принципиально другого. И как можно больше впихивать в себя новую информацию.

Зачем?

Потому что пытаясь изучить, то что будет пользоваться спросом завтра, вы неизбежно проиграете. Самое лучшее что можно развить в себе прежде всего (и наверно единственное) — это пыстро разбираться в новом материале. Если достигнете этого, то неизбежно, что не стало бы пользоваться спросом, вы всегда это сможете быстро в себе развить. Именно этому и учат в институтах — интеллекту и скорости мышления, а не дифурам и культорологии как думают многие. Поэтому в ВУЗе на самом деле все предметы важны, потому что важны не сами знания, а те способности, которые вы приобретаете изучая эти знания.

Но достигнуть этого можно только при том условии, что профессия вам действительно нравится.
Уверенно? :)
Если вы на данном этапе своего развития еще не можете реализовать такие ресурсы, как Харб или Twitter — то вам есть к чему стремиться. На этом уровне конкуренция не столь высока, как по вебу вообще.
Где то я видел статистику регистрации доменов в зоне RU. Сейчас найти не могу, может кто кинет ссылку. Значительный спад спроса на новые доменные имена был с конца лета 2008 года. Это значит, что малый и средний бизнес уже не так торопиться завить о себе в интернет. В свою очередь есть еще программисты, которые рвутся в веб. Скоро очень большая часть останется не у дел, а остальные (кроме крупных проектов) будут работать за копейки.
Если в двух словах, то действительно надо валить.
Чтоб сделать такие ресурсы как Харб или Twitter надо работать целой командой. Самому практически не реально.

Ну а в теории, конечно, можно продумать много чего
Замечу, что Хабр и Twitter в сегодняшнем их развитии. Но начиналось это все на коленках, одним-двумя программистами. Которые не только придумали идею, но и реализовали базовую ее часть. За счет чего привлекли финансирование.
Одной идеи ой как недостаточно. В интернете есть целые банки идей. А вот сделать так, чтобы добрый дядя прослезился и выписал чек на 100 тысяч долларов, ой как непросто.
К сожалению, я не могу бросить основной доход (хотя он и не большой) ради реализации своих идей, темболее совмещать это с учебой и работой просто не реально.
спасибо за статью.
такой вопрос — по первому образованию я историк. по второму — финансы-менеджмент. сердце мое отдано IT. Какие прикладные области из этой сферы приходят на ум?
Ну, может автоматизация финансового анализа во времени? Кажется я не туда пишу))
Я бы добавил, что программисту всегда важен наставник (хотя во многих, если не во всех, областях такой человек требуется). Подобная идея описана и Джоэла Спольски, ссылку на статью которого я нашел где-то на этой странице.

Когда я был совсем молод и зелен, у меня был такой человек. Он, по своему, поставил меня на ноги и отвечал на мои вопросы. В результате разработчиком он оказался никудышным, но был неплохим наставником, который не посылал меня, если я задавал глупые вопросы.

Дальше ничто не мешает развиваться самостоятельно. Главное упорство!
печально. очень печально видеть и такие опусы, и такие комментарии на них.
языки, указатели, асм, матан, диффуры… о чем вы????
речи как на олимпиаде на 1 курсе.

вы вообще слышали о дейкстре, ахо с ульманом и кнуте?
слышали но не читали? а зря!
с тех пор в прораммировании не появилось вообще ничего.
любой язак программирования учится за неделю (тем кто уже умеет программировать)
web, embedded и т. п. — какая разница что из этого писать, если ты можешь сделать что-то большее чем редактировать примеры из хелпов?

жуть-жуть-жуть.
нас поглотят индусы.
на специализацию ума не надо. надо особь с пальцами. у них таких особей больше.

когда-то раньше мы брали именно фундаментальными знаниями.
видать время прошло.
Предложения в русском языке начинаются с большой буквы. Фамилии людей тоже пришутся с большой буквы. Это так слову, если вы уж о Дейкстре заговорили.

К сожалению, в данное время наличии знаний математического программирования и сопутствующих наук не делают из вас хорошего программиста. Ранее математика и программирование очень сильно соприкасались, сейчас уже почти нет. Поэтому время и прошло.
спасибо за синтаксический анализ. жаль что неполный.

я не очень люблю математику, и совсем не понмаю что такое «математическое программирование» (м.б. линейное?).

мне почему-то кажется что программирование, это наука об алгоритмах. так вот, на мой взгляд, все основные алгоритмы, используемые до сих пор были придуманы в 40х-60х годах. и не могу вспомпнить ничего из свежего, что как-то существенно повлияло-бы на подходы к программированию.
Прграммирование — это ваще никак не наука, это искусство создания программ. Похоже, вы не читали Кнута, если даже не обратили внимание как называны его книги. :-)

А наука о алгоритмах так и называется «Теория алгоритмов».
еще немного, и вы того и гляди, назовете еще одну достойную упоминания книгу:

Название: Алгоритмы+структуры данных=программы
Автор: Вирт Н.
ах, да: «ваще» undefined symbol encontered. it is not a word from the russian language, nor previosly defined symbol
У вас на клавиатуре клавиша «u» явно плохо нажимается.
и не могу вспомпнить ничего из свежего, что как-то существенно повлияло-бы на подходы к программированию

Про теорию категорий что-либо слышали?
Это же к слову о «любой язык учится за неделю». На основе каких языков вывод сделан?
> Про теорию категорий что-либо слышали?
не слышал. погуглил. допускаю, что там есть что-то новое, но так сразу обнаружить не удалось.

> Это же к слову о «любой язык учится за неделю». На основе каких языков вывод сделан?
это вопрос какие языки я знаю?
нужен точный список?
лучше вы мне назовите язык который будет принципиально отличаться, скажем от: C, Lisp, Prolog, ну и для прикола BASIC :)
ой. чуть не забыл про ооп. ладно, чтобы не убеждать всех что ооп не существует, добавим еще java
Очень сомневаюсь, что даже Си++ учится за неделю. Абы как, чтобы писать на нём «на фортране» — может быть.
А так назову Haskell, Agda2.
чтобы «писать» нужно знание алгоритмов. чтобы писать на «языке» нужны навыки конкретного языка. они и учатся за неделю. с++ учится за неделю при знании с и того как там реализованы ++-ные прибамбасы.

что до названных вами языков — да. я их не знаю. скажите что там есть такого, чего принципиально нет в тех языках которые я назвал? (чтоб было конкретнее: чего нет в lisp и java)
В неделю обучения C++ входят шаблонные шаблонные параметры, надеюсь? Человек после C и недели обучения факториал напишет на системе типов?
Ну это как показатель хорошего понимания. Иначе — это Си с классами, ну и дай бог шаблонными контейнерами.

Haskell чистый и ленивый язык программирования. Там вполне в порядке вещей бесконечные структуры данных, к которым вряд ли человек привык в других языках. Надо задачу решать по-другому, чтобы воспользоваться этим. Сайд-эффекты надо отделять, потому что, к примеру, функция sort принципиально не может выводить на консоль, ну и так далее. Чтобы хорошо его понимать, желательно знать хотя бы о функторах (не из Си++, а из теории категорий), монадах, стрелках.
Т.е. писать на нём как на Си, везде впихивая IO (обозначающий, что может быть осуществлён ввод-вывод, это не ключевое слово, это одна из монад) и не пользуясь преимуществами лени, — возможно и получится, но это не умение писать на Haskell.

Agda2 ещё хлеще, так как это вообще «доказатель теорем», но там система типов ещё мощнее, чем на Хаскеле, — dependent types.
хм. для вас язык прогаммирования это инструмент для написания программ или для создания шедевров которые можно оценить лишь в исходнике?
template template — это конечно круто, а много-ль случаев когда это упрощает, а не усложняет разработку?
а то и их простого c можно навороченные define-ы вспомнить. только почему-то это считается плохим тоном.

что касается haskell с agda, я уже сказал, что не знаю этих языков, а потому мне трудно оценить ваши пассажи. я спросил что _прирнципиально_ там отличного. причем не от с, а от lisp и java.
Инструментом надо уметь пользоваться. И уметь пользоваться хорошо, в противном случае преимуществ сам язык не даст никаких. Даст преимущества лежащая под ним платформа, написанные на нём библиотеки, whatever (что, конечно, тоже крайне важно), но не язык.

я спросил что _прирнципиально_ там отличного

Я же написал: ленивость, чистота, мощная система типов. Т.е., собственно, отличается всем, потому что это основы языка. Строгие нечистые языки с [почти] одинаковой системой типов как раз ничем и не отличаются принципиально: Java, C#.
С continuation в scheme можно за день разобраться, а где их использовать? Это всё равно новые знания, которые ещё надо научиться применять.
тогда пардон. не понял что имелось ввиду. конечно, чтобы владеть языком хорошо и красиво, потребуется сильно больше недели.

я говорил о том что недели достаточно для того, чтобы реализовывать на новом для себя языке коммерческие продукты.
Если это коммерческие продукты «на отвяжись», тогда может быть, но после знаний например шарпа и явы на плюсы пересесть за неделю и написать что-то действительно сложное (то что вы предположим писали уже на той же яве) практически нереально, либо это будет работать через одно место

Про хаскелл, эрланг, пролог и иже с ними я вообще молчу.

Или в качестве яркого примера можно привести руби либо питон. Да, на нем можно писать как на той же яве, но смысла в этом ноль. Чтобы понять как писать на руби (или питоне) надо сильно больше недели.
могу вас порадовать — новые алгоритмы придумывают каждый день. и я не об алгоритме выпадения менюшки на сайтике второкурсника-начинающего-вебдевелопера, а об абсолютно серьезных, математически обоснованных алгоритмах решения сложных задач физики химии итд. вы просто наверное в тех водах не плавали и поэтому не знаете.
НЛО прилетело и опубликовало эту надпись здесь
Извините что прерываю, но есть ли что почитать на эту тему?
чуть поясню:
у него есть серия книг «Искусство программирования». первые три тома изданы на русском языке. вот они — обязательны к прочтению :)
задачи уже все порешали?
опыт подсказывает, что читать трехтомник кнута советуют лишь те, кто сам его смог долистать максимум до описания команд микса.
Как ни крути, учиться сейчас мало кто хочет, в основном по всё той-же причине, что на работу берут первым делом человека с опытом, а не с новеньким дипломом.

И если говорить о постоянно развивающихся и новых технологиях, стоит учесть, что в основном в тех-же колледжах и техникумах сидит возрастной контингент от 40-50 (ну где то так), серое вещество которых уже не может воспринимать, а тем более успевать за прогрессом :) Отсюда кажущийся(возможно) вывод о бесмысленности траты времени на обучение.

Стоит заметить я в своё время(6 лет назад) закончил учёбу, в программе изучения были:
на первом курсе: pascal, assembler, dos :), технология (не помню точно, там железо изучали скажем так — внутренние устройства), строение сетей
на следующем и далее: c/c++, delphi, 3D Max, clipper(ЯП для работы с БД :))
ну и разная мелочевка скажем так: MS Office продукты, Вышка, Дискретка, МатСтат, Комп. моделирование, бух.учёт, экономика :)
Надо сказать не жалею, самое главное, что познал С++ и с чем его едят, в дальнейшем освоение языков стало «достаточно легким», как правило после изучения синтаксиса языка всё становилось на свои места, так как главное — алгоритмы как правило всегда те же.

Тем не менее стоить отметить забавный момент, что из примерно 45 человек(моя группа и другая, с которыми я больше общался) программистами стали 3 человека :)
а другие куда пошли?
стали людьми.
т.е. программистами стали три человека, а остальные сорок два стали человеками?
Девушки как правило совсем в разные специальности.
Парни чаще в сферу связанную с техникой хоть как то :) системные администраторы, в компьютерные клубы, установщиками софта(служба F1 и похожее), операторы, и т.д.
Т.е. по сути программистами то они или не хотели быть или не смогли, скорее первое, просто был бум и было модно, вот толпы и кинулись грызть гранит «компьютерщиков» :)
Вообще мне вопрос о знании математики показался странным — в любом университете информатика включается в себя анализ, дискрет и все что прилагается. Так же в любом нормальном вузе есть лецкии по алгоритмам, по структурам данных, по сложности, по операционным системам, по компьютерной архитектуре и на ассемблере все еще пишут и тд и тп — и все это обязательные предметы, какая тут вообще речь нужны или нет
(насколько я могу судить, оспаривается вообще идея «элитности» программирования, в смысле требования в/о. сейчас в любой конторе полно людей которые не смогли доучиться, и они пошли работать сис. адимнами. а там их всех называют «программистами». а после того как они научились писать скрипты в пару строчек, а потом такие-же программы на с, php, python и т.п., они задались вопросом а твари мы дрожащие или… вот и пошла такая речь)
Только мне кажется, что слово «кодер» — сленговое, и его некорректно сравнивать с понятием «программист»?

Вообще, имхо, в большинстве случаев очень хорошими специалистами в этой области становятся те, кто поступает в нормальный (в плане обучения) технический ВУЗ, учит математику, физику и др. точные науки + занимается совершенствованием в программировании на стороне :) В ВУЗ-е, как и в школе, учат только основам. Тонкости познаются на практике.
и тут наверное стоит сказать слово НАНО, а то про него перестали «громко» говорить :)
Почитайте Маркса про автоматизацию труда. Еще век назад об этом писали.
> Web-программисты радуются появлению Ruby on Rails.

Ага, а еще радуются появлению Zend Framework, Codeigniter, Django, TurboGears, Struts2, Spring MVC и вагону и маленькой тележке всяких других.

Теперь веб программисты часто радуются.
Это всё Ваши личные домыслы на тему, реальность она как бы по другому.
Во первых: респект автору. Статья получилась очень легкой для восприятия. Порадовало, что в ней нет «острых» углов — субъективного мнения автора, аля «я прав, и точка»… Пишите еще.

Во вторых: некоторые комментаторы писали, что новый язык/технологию можно изучить за неделю-две максимум. Неужели вы и вправду можете за это время освоить язык настолько, чтобы писать на нем хороший, расширяемый, понятный код. Спорить не буду, поставленную задачу решить вы сможете и с недельными знаниями, но подразумевается ведь то, что переходя на другой язык/технологию вы должны остаться тем же (or +) профессионалом, что и раньше. Ваш код должнен быть тому подтверждением.
Статья хорошая. Жаль только раньше нам такого не говорили. Ко всему пришлось прийти самому. Зато теперь выбираешь на что тратить свое время а на что нет :)

ИМХО. Чтобы решить проблему знаний технологий\фундаментальных наук Вузы должны сотрудничать с ИТ-фирмами. Таких примеров есть много и результаты тоже есть
Размышления хорошие но не логичные. Размышления ради размышлений. Советовать выбирать специализацию программисту или математику это всё равно что советовать токарю на первом курсе ПТУ готовится к точению именно полуосей АБС.017.001.02
В программировании нет никакого волшебства — это тяжёлый кропотливый и очень нудный труд. Для любой реализации требуетсянесколько больший объём знаний чем у обычного менеджера. Но и это не факт. Хороший менеджер точно знает и умеет больше среднего программиста.
Избыточная оплата туда программистов обусловлена именно скукой которая царила последние двадцать лет в программировании. Кто будет спорить тот скорее всего путает освоение профессии с самой профессией. Учится программированию интересно. Работать почти всегда нет. Рутина заедает даже творческие направления типа вебдваноль дизайнеров.
Так вот автоматизация работы программиста, а фреймвоки и всякие студии занимаются именно автоматизацией работы — точно так же как бетономешалка помогает каменщику. Сделают эту работу доступнее — и мене оплачиваемой, но в перспективе.
Должен произойти информационный прорыв — менеджеры и секретарши должны узнать что сделать сайт при нынешних технологиях не немного сложнее чем составить договор или приготовить чай для босса. Революция началась. Кроме того идёт закрытие технологий несмотря на открыте ПО. Они становятся сложнее для понимания. Также как бетононасос сложнее бетономешалки и его уже нельзя собрать на колене или починить дома.
Что то я мысль потерял…
Короче — всегда будет интересно быть математиком, физиком, писателем может быть ещё пару тройку профессий в ближайшие 50 лет не потеряют налёт сказачности. А вот программисты станут менеджерами. Но не завтра. Access уже 15 лет но нормальные люди до сих пор грустят когда слышат о базах данных. То есть на стыке математики, а БД — это теория множеств и реляционных отношений, и програмирования будет весело ещё лет 20-30.
Интерфейсы в ближайшее время будут прогрессировать с максимальными темпами. Там тоже не будет скучно. А вообще не нужно заморачиватся — хороший человек всегда найдёт где и как заработать и программирование не панацея, хотя и выход для многих.
Спасибо за рассуждение, но как непрограммист я так и не понял что же делать если я хочу им стать. Судя по всему придется узнавать самому. С этим вопрос и связан. Был бы признателен всем благочестивым специалистам с достойным опытом за рекомендации ВУЗов и специальностей которые имели место быть в их незабвенном студенческом прошлом. Очень был бы признателен, так как сейчас желаю сделать оптимальный выбор. Заранее спаибо.
Матрица компетентности программиста — dev.by/page/programming_matrix

Хочешь длинный путь, начни с начала, хочешь короткий с конца.

И не пугайся начать с конца, многие из книг для перечисленные для четвертого уровня, на самом деле изначально предназначаются для студентов.

благодарю
вот ради этой ссылки стоило прочесть и пост, и комментарии, спасибо! :)
>>конкурс на место с каждым годом все меньше. Преподаватели стали гуманнее, а
делая лабораторные работы на современных языках программирования, уже не
нужно знать как устроен ящик, к которому тянется шнурок от монитора.

Я бы сказал — снизили уровень требований, со всеми вытекающими печальными
последствиями. Идеальных абстракций в реальной жизни не реализуешь, а в случае
возникновения проблем, для поиска путей их решения, базовую информацию надо уже
иметь.

>> каждый год появляются новые языки программирования, новые фреймворки и технологии.

Ну… на самом деле действительно, с тех пор как я изучил Lisp, «новые технологии» стали меня удивлять гораздо меньше. Большинство нововведений просто вызывают радость, от того что очередная хорошая вешь попала в мейнстрим.

>> Между тем,… были бы полезными знания о перспективах развития рынка ПО, как минимум на 3 (больше — лучше) года вперед

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

    Много интересных высказываний что: «любой язык учится за неделю», «С++ учиться за неделю» — да мой покойный преподаватель С, С++ и ООП, в гробу переворачивается от таких слов. Я про него могу сказать только самые лучшие слова, он был моим идеалом… И он не был одним из сто-летних препадов, которые бормочат о чем-то себе под нос… Тут уже сказали, жаль что не учат NET Framework 4.0, он учил… Конечно не 4-тому а второму в то время… А в его профессионализм я верю абсолютно, да и преподавал он только для своего удовлетворения, так как был Директором Саратовского отделения EPAM Systems. Кто не знает — погуглите… Неделю хватит для изучения основ, может синтаксиса, а до коммерческого проекта ещё далеко, совсем далеко…

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

    А что вообще эта масса в целом делает… При устройстве на работу, воротят такие проекты, когда смотришь на их код, манеру написания, и на тот ужас, который работает раз — через раз — диву даешься как такое возможно. А что — же дальше, их увольняют, приходят новые, и тд. Потом у работодателей складывается неверное представление о программировании и программистах вообще.
    Работал в свое время в крупной организации, писали биллинг-систему. Так там до меня такие чудеса написали, что вообще переписывать всё с нуля пришлось. Полный пример изучения языка за неделю, а потом смотри на это и радуйся… А какие специалисты были — web-программист — автомеховец, базы-данных -ин.яз. А сколько таких сейчас, готов поспорить целые кучи. Я конечно не хочу обидеть всех кто занялся программированием, у меня есть много примеров что люди работающие в должности программистов но не по специальности, переплюнут многих кто по специальности работает, но таких мало.
    А фриланс биржи… Лезут все кому не лень, а итог? Демпинг цен, я таких цен уже сто лет не видел, чтобы сайт предлагали сделать за 300р, логотип — 100р. Я даже видел интернет магазин за 5000р. А ведь алчность наших бизнесменов, заказчиков что творит. Нарываются на умельцев «за неделю PHP», или «в 9-ом классе Joomla»?.. А потом всем говорят, «Заказывал я уже таких как вы». А потом поробуй доказать что мы не такие как они? Знаю, сам общаюсь с такими заказчиками…

    По поводу выбора специализации… Да 5 лет назад, учась на 2-ром курсе на специальности 220400 — Программное обеспечение вычислительной техники и автоматизированных систем, выбрал WEB. Специализация «WEB — программирование». В то время он был ещё не так освоен ка щас. Да и браузеров по меньше было:) Верстать полегче :) Что касается ситуации сейчас, даже не знаю что сказать. Не могу посоветовать вам идти в WEB, уж слишком много в него идёт, и с каждым годом в нем будет ещё сложнее, но если очень хочется то можно!!! :))

P.S. По поводу WEB могу сказать только одно: да, конечно, не спорю, очень много типовых задач можно решить CMS, модулями, плагинами… У студий, фрилансеров есть свои наработки, свои ЦМС, и тд. Но не стоит думать что веб программирование заключается только в настройке скина на движок, плагинов JQuery, и выбора модулей этого самого движка. Есть не типовые проекты, которые намного сложнее, интересней, и прибыльней…
P.P.S. Человек решивший олимпиадную задачку по программированию ещё не программист, далеко не программист…
Это тоже самое как человека сидящего за компьютером называть компьютерщиком…

У меня ВСЁ! :))) Извиняюсь за флуд, взбудоражила меня статья и комменты :))
Про изучение языков и WEB согласен. Сам выбрал WEB нишу, образование профильное по направлению программист-техник в ПТУ, щас в униституте тоже на кафедре компъюторных наук. Работаю с PHP и MySQL уже 5-й год. Ничего другого не учил и пока не собираюсь по одной простой причине — синтаксис за неделю легко, основны за месяц — тоже вполне. А вот изучить все изъяны и фитчи, особенности и.т.д. — надо годы работы по профилю с конкретным языком и технологиями, используемые в работе. Я даже в вёрстку не вникаю глубоко, оставляя это людям, которые знают своё дело куда лучше меня.

В итоге за 5 лет я имею глубокие познания PHP и MySQL, много опыта работы с сопряженными технологиями и в состоянии оптимизировать работу приложений, при оптимизации которых многие дают единственный вердикт — поставить ещё сервер. И много людей, которые меня рекомендуют, хотя стоимость моей работы весьма высока.
Почему то многие считают, что им все должны. Должны все рассказать, показать, обучить.


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

У нас так вот и объясняли все основы — читая текст по слайдам. А вопрос задашь — скажут глубокомысленное «эээ», и всё.

Так что тут ещё вопрос хороших преподавателей возникает, а не только природной лени студентов.
Попробуй вот эти лекции. Они сами уже не новые, уж более чем 10ней давности :)

Не все что старое значит уже не годное.
Не спорю. Я скорее к тому, что сидеть слушать чтение вслух со слайдов пользы никакой не приносит. Всё же преподаватель для того, чтобы объяснять, а не чтобы читать вслух.
К сожалению, далеко не всегда так.
Читаю коменты, и смотрю тут все великие программисты… толи я децл тормоз, толи занимаюсь чем-то не тем, но у меня уже года 3 не было моментов, когда я бы сказал — что это задача легкая, и каждый самоучка ее сделает…

Многие тут имеют сертификаты по «простым языка» прогарммирования вроде Java, c++,c#, .net, php? and etc? Попробуйте ради интереса зайти на brainbench.com, там бесплатно есть основной тест почти по всем современным языкам программирования, потмо можно ради интереса поискать Сановские, или майкрософтовские тесты, и оцените знания языка… Хороше ели хотя бы 20 % хабра наберут хотя бы 80 % в этих тестах…
да легко, лол


Scored higher than 96% of all previous test takers.

брейнбенчевские тесты — полная лажа на самом деле. на них практически никто и нигде не смотрит. а если и смотрят, то только в отрицательном плане, в духе «не постеснялся же такую херню в резюме указать».
вас слово fundamentals не смущает?
ни капли. но есть и другие. одна херня, они даже проще:



а платить им бабло чтобы получить возможность сдать полный набор тестов на жабапрограммера меня как-то жаба душит.
вот не знаю, либо я тупой, либо вы убер-гуру, либо ещё что-то.

Я на Java не пишу и только что пройдя fundamentals, получил вполне ожидаемый результат:
2.75 (это кстати минимальный для проходжения балл)
Strengths
OO Fundamentals
The Java Runtime
Weak Areas
Common Packages
Data Manipulating
Flow of Control

На мой взгляд он как раз очень чётко отражает действительность.
Да есть понятию о ООП, есть понятие как это работает, однако затрудяюсь сказать какие классы лежат в каких пакаджах, и также какие у них методы и как они реализованны, что и создаёт проблемы.
не дописал… в общей сложности тест, как раз и показал — что-то в программирования я понимаю, однако конкретно по этому языку, знаний маловато.
ну во первых, чего тут смешного? и чем вы тут хвастаетесь? это всего лишь Fundamentals, где 50 % вопросов можно запустить в компилятор и проверить. И 96 % это не ваши балы, а всего лишь относительное положение ваших балов по сравнению с другими. Так что по балам я думаю около 85%, что вообщем-то для самого простого теста достаточно.
Более интересен тогда тест как миниум от Сана:
Sun Certified Programmer for the Java Platform, Standard Edition 6 (CX-310-065)

Да и то, эти тесты всего лишь показывают знание языка и все.

P.S. можете ради интереса тут дать свою транскрипцию из brainbench :)
scpj я сдавал 5 лет назад, по воспоминаниям он еще проще брэйнбенча. только не шестую яву конечно же, а 1.4.
транскрипцию, естесственно, не дам.

и я не хвастаюсь, я просто говорю что эти тесты — полная фигня, и ничего толкового они не тестируют, и задачи в них — идиотские, и либо полностью оторванные от реальности либо на банальное знание апи — это особенно актуально для scwcd и scbcd. такие дела. умение программировать они никак не выявляют.
Прочитайте внимательно что я писал выше, я говорил про знание языка программирования, а никак не умение программировать. Для этого можете пройти SCJD — очень интересный тест, точнее там даже тестов нету. Но опять же — там ни чего кардинально сложного нету.
А мой коммент был написан сугубо для тех, кто говорит, что можно изучить язык программирование за пару месяцев.
P.S. SCJP 1.5 значительно сложнее 1.4, т.к. появились совершенно новые типы заданий. Сдать на зачет легко, если не изменяет память, то выше 52% надо получить. Но у нас к примеру в фирме внутреннее требование в 90 % и выше. А для этого надо хотя бы недельку посидеть и поучиться. Особенно много в 1.5, возможно и в 1.6 многопоточности. А тут уже есть хоть какие-никакие азы прогарммирования, и начальные понимания многопоточности.
По веб технологиям не получал сертификаты, так что сказать ничего не могу. А вот SCJD весьма интересен.
НЛО прилетело и опубликовало эту надпись здесь
кто может подсказать хорошую(ие) книгу(и) по ООП? желательно с ориентацией на java… на уровень новичка, который хорошо понимают теорию, но недостаточно практики…
ну Буч вестимо;) именно с ориетнацией на яву не знаю
Сам по себе ООП-то довольно прост. Ну понять, что такое наследование, зачем инкапсуляция, про полиморфизм еще. А вот чтобы понять, как его применять, следует изучить т.н. паттерны проектирования.

Есть классическая книжка на эту тему, которую, как мне кажется, должен осилить каждый уважающий себя программист: Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес — «Приемы объектно-ориентированного проектирования. Паттерны проектирования».

Еще можно почитать Фаулера — «Архитектура корпоративных программных приложений приложений», отличная книга тоже.
У Фаулера, кстати, примеры на java как раз.
Но там язык — далеко не самое важное.
спасибо всем большое за комменты :) фаулера уже скачал, почитаю
Ура, дочитал! ;-)

Интересно, что не было высказано ни одной фразы про Computer Scinece. Возможно, у нас это направление не так сильно развито, но, надеюсь, это только временно. Не очень распространённое, но, на мой взгляд, интересное. Правда, заработная плата (в среднем по Великобритании) невысокая, как можно видеть.
Напрасно все же пипл так дружно негативно отозвался про web coding. Именно веб сейчас является основным направлением развития IT рынка в целом, к этому можно отнести и направленность Microsoft в области разработки для того, чтобы дать возможность десктоп кодерам кодить для веба. Так же к этому можно и отнести такое широкое распространение нетбуков — мини устройст для серфинга и удобного взаимодействия с паутиной.
Паутина сейчас — это самое перспективное.
Просто не надо путать html + php + css + js кодера, который из этого набора владеет сотней другой тэгов и функций и специалиста в области web технологий. Сравнить это можно например так: один «спец» — админ, который поставил ОС сделал базовые элементраные настройки и получил в какой нибудь фирмочке звание сисада и полноценный системный администратор, владеющий не только диском с виндой и браузером с гуглом, а еще и ммозгом.

Причиной такой путаницы, как правильно заметил Автор, является обычная алчность и мания величия.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.