Размышление о программировании и программистах

    Навеяно в ходе последних событий
    Необходимость знаний математики
    и
    Кризис программиста

    Несколько слов о программистах для студентов младших курсов и тех, кто еще только собирается поступать в институт.


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


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

    (Разбор комментариев в конце статьи)

    Кто такие программисты.


    Программисты – это такие люди, которые занимаются разработкой программного обеспечения для различного рода вычислительной техники (ПК, сотовые телефоны, микроконтроллеры, и др.).

    Есть множество специальностей и различных направлений, которые по традиции называются техническими. По окончании учебы в ВУЗе, студент автоматически становиться программистом с приставкой инженер, математик, системный, и др. Сами программисты часто себя называют с приставками Веб, C++, .NET, Java, баз данных, Linux и т.д.
    На практике очень часто бывает, что и инженер, и математик, и системный программисты (по образованию) сидят за одним столом, и решают одну задачу, скажем, на языке Java.

    Есть еще одна градация – это специализация. Здесь выбор относительно добровольный и задачи бывают различные. Например, 1С, web, базы данных, ЦОС, САУ, прикладные программы, 3D приложения, искусственный интеллект.
    Знания, навыки, приемы в каждой предметной области специфичны.

    Как делают программистов.


    Делают их в ВУЗах. На лекции заставляют ходить всем скопом без учета (как жаль) специализации, по ним же сдавать экзамены.
    Считайте, что вам крупно повезло (в отличие от ваших будущих работодателей): из-за сложной демографической ситуации вначале 90-х, конкурс на место с каждым годом все меньше. Преподаватели стали гуманнее, а делая лабораторные работы на современных языках программирования, уже не нужно знать как устроен ящик, к которому тянется шнурок от монитора.

    Однако не перевелись еще специальности, где проходят операцию сложения в три строки, и студенты до сих пор сваливают выход указателя за границы массива на ошибку компилятора Microsoft.

    Как работают программисты.


    Путь программиста сложен и тернист. Конечно, все зависит от специализации. (Можете меня подправить) 90 % решаемых задач на данный момент – это базы данных и web-программирование. В данной (и не только) предметной области каждый год появляются новые языки программирования, новые фреймворки и технологии. За всем не успевают следить даже отмороженные гики. И уж конечно не стоит ожидать, что в следующем году в институте вам будут преподавать NET Framework 4.0 (а как хотелось бы). А ведь его уже кто-то использует и радуется, что ПО создается быстрее, да и область необходимых знаний сужается до знаний фреймворка. Web-программисты радуются появлению Ruby on Rails.

    Как стать программистом.


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

    А теперь СТОП…

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

    Несмотря на то, что число рабочих мест непрерывно растет, рост этот по направлениям и специальностям не однороден.
    К сожалению для профессии (к счастью для отдельных личностей), сейчас предприимчивый школьник старших классов, кое-как разобравшись в Joomla, может зарабатывать на фрилансе больше, чем его папа, работающий на заводе.

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

    С каждым годом профессия программист все больше уподобляется профессии клерка (он же офисный планктон). С определенными ограничениями конечно:
    1) не во всех предметных областях;
    2) хороший программист работу найдет.
    С выпуском нового фреймворка, область знаний программиста для успешного выполнения 99 % задач может быть намного уже, чем без него. В итоге, до решения определенного круга задач могут быть допущены 40 специалистов, а не 20 как было ранее. К тому же ВУЗы выкинули на рынок очередную партию выпускников. И вот их уже не 40, а 60.

    Вот тут возникает еще 2 вопроса:
    1) какую предметную область выбрать, чтобы было интересно, прибыльно и вопрос о конкуренции рынка труда стоял не очень остро?
    2) что значит «хороший программист»?

    Как выбрать предметную область.


    Так как областей специализации существует множество, можно в общих чертах представить область своих предпочтений. Понятно, что после 5-тилетней разработки баз данных будет несколько сложно реализовать себя в области 3D-моделирования, при условии, что в данной области уже есть специалисты. Хотя шанс есть всегда.
    Проводя аналогию, я бы не хотел оказаться у хирурга, который всю жизнь был окулистом. Для любителей холиваров — есть такой врач — терапевт (врач широкого профиля).
    Между тем, (особенное внимание хотелось бы обратить тех, кто только еще выбирает куда пойти учиться) были бы полезными знания о перспективах развития рынка ПО, как минимум на 3 (больше — лучше) года вперед.

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

    На рынке есть множество специализаций. В таких областях, как web и базы данных конкуренция и сейчас не самая малая. Скорей всего, с выпуском все новых и новых готовых инструментов для разработчиков, средняя зарплата в этих направлениях начнет со временем снижаться. Даже если количество рабочих мест будет по-прежнему расти. В любом случае, хочу предостеречь от соблазна забить на учебу и сшибать деньги по легкому здесь и сейчас. Высокая цена будет только на Гуру, которые могут решить тот самый 1 % задач, недоступный остальным.

    Хотелось бы обратить внимание на такие специфические области, связанные с программированием, как криптозащита, кодирование и передача информации, цифровая обработка сигналов, системы автоматизированного управления. Интерес к этим областям увеличивается с каждым днем, их область применения достаточна широка – начиная от модема, и заканчивая космическим кораблем. Здесь тоже нужно быть Гуру, и танцев с бубном не меньше.

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

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

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

    Что значит «хороший программист»?


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

    Вот несколько моих соображений по этому поводу.

    Чтобы решить для себя вопрос выбора предметной области с максимальной эффективностью, необходимы базовые знания экономики и истории. Для того чтобы понимать других и ясно излагать свои мысли – нужны знания русского языка и литературы (программист-одиночка не сможет разработать сложную систему). Есть базовые знания математики (различные направления) и физики. Конечно, не каждому в своей жизни придется решать дифференциальные уравнения, либо реализовывать устройство, работа которого основана на эффекте Доплера.

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

    Современно высшее техническое образование дает базовые основы – фундаментальные знания в различных областях. Они дают направления развития в различные области. Если вам не интересен какой-то предмет, это не значит, что он никому не нужен. В потоке достаточно большое количество человек.

    Масла в огонь священной войны подливает простая человеческая лень и мания величия. Почему то многие считают, что им все должны. Должны все рассказать, показать, обучить. Почему при получений фундаментальных знаний, вопрос о самостоятельном изучении языков и технологий воспринимается дико? Можно зная, например, Pascal и основы ООП, изучить язык C++ самостоятельно. И многие делают это.

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

    Если человек хочет, чтобы его обучили языкам, и и технологиям (часто в 1 экземпляре) – ему прямая дорога в техникум. (Процесс обучения нужно обсуждать отдельно)

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

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

    Резюме.


    Желательно уже к концу второго (раньше – лучше) курса определиться в предполагаемой предметной области будущей специальности. Не обязательно идти в ту область, которая является модной сегодня. Нужно анализировать рынок труда и ситуацию в мире (в России в частности). У программиста есть огромный выбор интереснейших и перспективных областей. Они сложны, интересны, востребованы и достаточно хорошо оплачиваемы. А работать надо собой в профессиональном плане нужно начинать как можно раньше и как можно больше.

    P.S. Прежде, чем оставлять комментарии, рекомендую так же ознакомиться со статьей Джоэля Спольски – Советы студентам, изучающим вычислительную технику.

    UPDATE

    Выводы, которые можно сделать из комментариев


    1) олимпиадник (не равно) программист.
    См. ниже. (bobermaniac)

    2) школьник (не равно) программист.
    В школе только процесс обучения. (Есть исключения)

    3) Программирование – это врожденная болезнь.
    Если в 18 лет вы не знаете даже бейсик, то шанс заболеть мал.

    4) В институте собираются умные люди (в том числе студенты). Возможно, вам есть чему у них научиться. (kmike)

    5) Для того, чтобы стать профессионалом, нужно много работать как над собой, так и над различными проектами.

    6) Симптом «изучу любой язык за 2 недели» проходит с возрастом (профессионализмом). Не у всех.
    Убедитесь сами. См. ниже.

    7) Обратите внимание на сферы деятельности, где базовые знания математики (и прочее) не нужны. Возможно здесь высокая конкуренция.
    Пример, habrahabr.ru/blogs/arbeit/59989/#comment_1633645

    8) Обратите внимание на развивающиеся (пока еще не модные) сферы деятельности.
    aryeh знает, что говотит.

    9) На Хабре нужно развивать систему модерации. Иначе любую тему можно превратить в помойку.
    Как минимум возможность скрытия веток обсуждения, выходящих из темы топика.

    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 231

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

      Просто почему-то это разделение на программистов, проектирующих системы, и кодеров — реализующих их идеи, сильно неявно. Есть постановщики, но у них другой спектр задач.
        0
        Спасибо за дополнение. Разделение на самом деле неявно. У меня это не указано.
          +2
          разделение очень даже явно. только в вакансиях таких программистов называют архитекторами.
            0
            Согласен, точно так же для себя разделяю эти два понятия.
          • UFO just landed and posted this here
              +2
              %username%, вы учитесь на первом курсе или уже программируете сложную вычислительную систему своем возрасте?
              Стать программистом в 9 классе могут только единицы во всем мире, и это скорей исключение. Если вы один из них — вам респект.
              • UFO just landed and posted this here
                  +3
                  Это не показатель.

                  В любой стране хватает кулибиных, но отрасль не может держаться на одних только самородках. Во-первых — их мало, во-вторых — они неопытны, а в-третьих — у них нет базы готовых решений.
                  • UFO just landed and posted this here
                      +5
                      Меня очень удивляет, когда мне рассказывают фактически мой же жизненный путь, и уточняют — «поверьте, такие люди бывают».

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

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

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

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

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

                            Но все будет круто.
                            А чтобы ужасов было меньше (или больше)), стоит почитать умных дядек типа Фаулера и GOF, если еще не.
                              0
                              А зачем вы пошли в лингвистический ВУЗ?
                                0
                                Вопрос к keksn
                                • UFO just landed and posted this here
                                    0
                                    Я может чего то не понимаю. От куда берется мнение, что для программирования высшее образование не нужно, а для изучения иностранного нужно обязательно идти в ВУЗ.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                                              0
                                              простите за опечатки, жаль нет возможности поправить.
                                                0
                                                Напомнило вот это:
                                                bash.org.ru/quote/403417
                                              +1
                                              >90 % решаемых задач на данный момент – это базы данных и web-программирование.

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

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

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

                                                Но это исключительно мое предположение, ни на что не претендующее.
                                                • UFO just landed and posted this here
                                                    +8
                                                    Думаю справочку после такого заберут и признают недействительной…
                                                  • UFO just landed and posted this here
                                                      +2
                                                      Ставьте копирайт :-)
                                                        +1
                                                        Enlarge your Erlang =)
                                                          0
                                                          C++ your penis!
                                                        +1
                                                        Возможно присудствием ниши Linux
                                                          0
                                                          Возможно присудствием ниши Linux
                                                          0
                                                          Зачастую программист — это не только профессия. Это диагноз :)
                                                            +2
                                                            Не совсем согласен с тем, что программистов делают в вузах. Вы правильно написали про мастеров и ремесленников. Только дело в том, что и «мастерству» человек учит себя сам. Ни разу не видел, чтобы кто-то кого-то смог научить программированию.

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

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

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

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

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

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

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

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

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

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

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

                                                                    Reinventing Lisp.

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                                                                                                          Это давно было, сейчас протечки заткнули, да и не пользуюсь я им уже.
                                                                                                            0
                                                                                                            *Вот почитай, что коллега пишет:
                                                                                                            www.rsdn.ru/forum/philosophy/1264362.1.aspx
                                                                                                              0
                                                                                                              > Да про это вообще речи не было. Ты заявил, что std::string и массив чаров — разные вещи, а теперь выяснилось, первые включает в себя второй.

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

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

                                                                                                              иии?

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

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

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

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

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

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

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

                                                                                                                > иии?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                                                                                                                    0
                                                                                                                    > я просто не понимаю, что вы хотите доказать? 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 руками, мимо всякой вм

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                                                                                                                              Я знаю.

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

                                                                                                                              Я знаю.

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

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

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

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

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

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

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

                                                                                                Неужели под все эти железки нет компиляторов для нормальных языков?
                                                                                            +1
                                                                                            ВЫ хотите сказать что Асм сейчас не востребован?
                                                                                            • UFO just landed and posted this here
                                                                                                –7
                                                                                                Ну и нахуя он нужен?
                                                                                                • UFO just landed and posted this here
                                                                                                    –10
                                                                                                    Я спрашиваю, нахера он нужен в разработке?
                                                                                                    • UFO just landed and posted this here
                                                                                                        –10
                                                                                                        Вякнул — и в песок?
                                                                                                        Реальную задачу назовешь, оптимизатор?
                                                                                                        • UFO just landed and posted this here
                                                                                                            –2
                                                                                                            Лол. Ответь на 2 вопроса.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                                                                                                                          я не силен в байндингах, но скажи мне — сколько времени тебе понадобится, чтобы сделать вменяемые байндинги для библиотеки уровня, например, 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 недели.

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

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

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

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

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

                                                                                                                          А я нигде и не отметал его слова. Он говорил очень правильные вещи, к которым стоит прислушиваться (чтобы для себя что-то понять, что-то новое узнать), но применять их можно только тогда, когда вокруг тебя — одни Луговские. Что не соответствует реальности, как ты понимаешь.
                                                                                                                            0
                                                                                                                            > я не силен в байндингах, но скажи мне — сколько времени тебе понадобится, чтобы сделать вменяемые байндинги для библиотеки уровня, например, 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 лет назад, и сколько сейчас.

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

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

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

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

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

                                                                                                                Я бы оставил не тронутым.
                                                                                                                0
                                                                                                                Эх… только недавно начал уверенно чувствовать себя в разработке веб-предложений.
                                                                                                                Конкуренция не маленькая. И это только сейчас, а что будет через год-два?
                                                                                                                Как себя вести лучше в такой ситуации?
                                                                                                                • UFO just landed and posted this here
                                                                                                                    0
                                                                                                                    Конкуренция в вебе будет только у кодеров (особенно быдлокодеров). Специалистов в вебе, как и в других областях действительно не хватает. Даже кодеров хороших очень мало.
                                                                                                                    И так и будет, потому как в вебе по-сути задачи такие-же по сложности как и в других областях, а проектирование систем или даже алгоритмов с учетом всех особенностей систем, с которыми этот алгоритм или система работают, задача явно не для всех.
                                                                                                                    +2
                                                                                                                    Как и всегда — работать и совершенствоваться. Решать различные задачи, в различных предметных областях различными методами. Приходить с работы домомой и снова садиться за комп для изучения уже чего то принципиально другого. И как можно больше впихивать в себя новую информацию.

                                                                                                                    Зачем?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                                                                                                                                                    Или в качестве яркого примера можно привести руби либо питон. Да, на нем можно писать как на той же яве, но смысла в этом ноль. Чтобы понять как писать на руби (или питоне) надо сильно больше недели.
                                                                                                                                      0
                                                                                                                                      могу вас порадовать — новые алгоритмы придумывают каждый день. и я не об алгоритме выпадения менюшки на сайтике второкурсника-начинающего-вебдевелопера, а об абсолютно серьезных, математически обоснованных алгоритмах решения сложных задач физики химии итд. вы просто наверное в тех водах не плавали и поэтому не знаете.
                                                                                                                                      • UFO just landed and posted this here
                                                                                                                                        0
                                                                                                                                        Извините что прерываю, но есть ли что почитать на эту тему?
                                                                                                                                            0
                                                                                                                                            чуть поясню:
                                                                                                                                            у него есть серия книг «Искусство программирования». первые три тома изданы на русском языке. вот они — обязательны к прочтению :)
                                                                                                                                              +1
                                                                                                                                              задачи уже все порешали?
                                                                                                                                                0
                                                                                                                                                опыт подсказывает, что читать трехтомник кнута советуют лишь те, кто сам его смог долистать максимум до описания команд микса.
                                                                                                                                        0
                                                                                                                                        Как ни крути, учиться сейчас мало кто хочет, в основном по всё той-же причине, что на работу берут первым делом человека с опытом, а не с новеньким дипломом.

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

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

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

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

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

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

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

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

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

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

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

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

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

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