Как не стать программистом или… тебе здесь не место

ПРОЛОГ


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

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

Ну а если ты в процессе самоопределения по данной профессии — you are welcome!

ТЕРМИНОЛОГИЯ


Согласно учебникам, программирование — это всего лишь процесс написания инструкций на каком-либо языке программирования (ЯП).
Но так ли это просто — взять и написать программу?
Неужели написать программу, это просто перечислить набор указаний (инструкций) компилятору и все готово?
Всего-то заучить команды и штампуй себе проги, да греби бабло!?

Программирование — это сугубо исследовательский творческий, а не технический процесс.

Программирование — это умение абстрагировать, мыслить объектами, функциональными зависимостями, виртуальными образами.

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

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

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

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

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

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

ВЫВОД. Программист должен уметь выполнять код в голове, до того как скормит его компилятору.

ГОРЬКАЯ ПРАВДА


Как правило, на программиста нельзя выучиться в учебном заведении.
Большая часть программистов — самоучки. Образование способно лишь заложить фундамент инженерных знаний. Остальное — это умственные способности и предрасположенности, помноженные на усердие и труд в квадрате, а то и в факториале(!).

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

СТАНОВЛЕНИЕ


Наши дела обстоят так. Ты читаешь про алгоритмы, учишь любой язык, пишешь десятки различных мелких программ. Любых программ — для себя, для друга, просто чтобы разобраться с технологией и пр. И уделяешь этому МНОГО времени. Я еще раз уточню – МНОГО времени. И вот у тебя все успешно получается?! Ты въезжаешь, ты понимаешь, тебе нравится и ты получаешь от этого кайф, внутренний душевный подъем! Когда программа работает как запланировано, ты чувствуешь прилив счастья, эндорфины так и плещут в твоем мозгу. Вот оно! Отлично!

Только после этого, ты становишься кем-то похожим на программиста. И только уже потом, немытая голова старый свитер и борода…

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

О ЯЗЫКАХ.


Существует много языков программирования, но особняком в это списке всегда стоял С++.
Почему С++?

С++ — это минималистичный язык, возникший как набор макросов от ассемблеристов. Вернее сначала возник С. Но не в этом суть, я не историк.
Почему рядовой программист должен знать С++?
Это примерно как священник, не знающий Библию. Как маркетолог, не знающий о правиле 4П. Как фотомодель без макияжа. Так и С++ — это тот самый необходимый багаж, который должен просто хотя бы лежать в голове на одной из полок.

Ты можешь не использовать С++ в действии, но ты должен знать его как канон, как основу всех основ. Но тем не менее, С++ весьма опасен при использовании, ведь, например, при манипулировании указателями, если программист до конца не понимает их основ, можно улететь на исполнение кода в участок данных (из-за этого, кстати, в JAVA, указатели отменили). А еще можно «выстрелить себе в ногу»)) так считал автор языка С++, господин Страуструп. Потому что таким инструментом, как С++, нужно очень грамотно владеть, чтобы пользоваться им виртуозно.

Также учтите, что часть современных языков взяла С++ за базу — Java, PHP, Perl, Ruby etc.
Все известные программы написаны исключительно на С++ (или С) — ОС Windows, ОС Linux, MacOS, iOS, Firefox, Kaspersky, Chrome etc. Более того, многие из известных программ, имеют открытые исходники и по ним можно учиться программированию.

На данный момент, только С++ дает самый быстрый и оптимизированный код под нативную родную платформу.

ПОЧЕМУ DELPHI НЕ ВАРИАНТ?


Здесь я приму отчаянную попытку отговорить начинающих от программирования на Delphi.

Pascal (IDE Delphi) — это программирование в рамках (ИМХО). Pascal — это язык, придуманный ученым Н. Виртом в 1970-ом году, в ходе разработки другого языка Модула-2. Pascal широко использовался для изучения основ программирования, но коммерческое использование он получил только в 80-90-е годы.

За десятилетия правления Борланда и InPrise он превратился в монстра, заимствовав (украв) часть синтаксиса из С++. Сейчас компания Embarcadero продолжает выращивать этого монстра, в чреве которого вы будете компилировать гигантского размера программы. Кстати и для Андроида тоже.

Я в свое время немало людей перетащил с болота Delphi на C++, чему они сами были впоследствии несказанно рады. Будучи С++-программерами, они с ужасом вспоминали про Паскаль и больше не имели желания на нем программировать.
Также, я слышал немало баек от программистов, пытавшихся переучить дельфистов на Java и потерпевших полный фиаско. Теперь многие ставят крест на дельфистах. Якобы, непереобучаемые.

Возможно это вызов и вам, господа дельфисты! Попробуйте написать прогу на С++. Через 2 месяца Delphi (Pascal) покажется вам детским садом и вы перейдете на следующий уровень развития (в среднюю школу). А там уже и Python не за горами.
Развивайтесь! А вам слабо?

Сразу попрошу не разводить холивор по поводу кто круче — Дельфи или С. Если Вы пишете на Дельфи хорошие коммерческие программы и ваши юзеры довольны продуктом, то значит все отлично. Пишите и дальше. Вы нашли свою нишу.

ИСПОЛЬЗОВАНИЕ ЯП


Теперь посмотрим на мировую статистику за 2015 год, так на чем все-таки пишут программы?
C (C++,C#,ObjC) — 28.5% (это нормальные пацаны)
Java — 21.5% (это Android, серверные и мобильные приложения )
Basic (+.NET) — 4.1% (это США с их обожаемым Visual Basic)
Python — 3.8% (это кулхацкеры, линуксоиды и гики)
Delphi (Pascal) — 2.9% (это Россия и Восточная Европа)
PHP — 2.7% (Web-программирование)
Javascript — 2.5% (Web-программирование)
Ruby — 2.0%

ШАГИ ПО СТАНОВЛЕНИЮ ПРОГРАММИСТА


С чего же начнется твое обучение программированию?
1. Ознакомление с алгоритмизацией
Тут для начала все таки хорош Pascal. Он неплохо развивает блочное мышление. Вводит в предметную область программирования. Не отпугивает так, как С++. И нога останется целой.
2. Переменные и типы данных
3. Базовые элементы языка
Структуры, классы
Циклы, ветвления, выбор, переходы, функции
4. Ознакомление с ООП
ООП — это именно тот функционал, который делает из программы человека «хорошую» программу. Это скелет (остов) любой приличной программы.
Это то, от чего едет крыша у начинающих. Это то, от чего бегут недалекие программисты.
Тут начинается абстракция.
Требуется понять только одно — ООП является костяком любой хорошо спроектированной программы.
Без ООПа порой сложно выстроить между собой логическое и интуитивно-понятное взаимодействие модулей программы.
5. Знакомство с технологиями — работа с файлами, потоками, графикой, сокетами, СУБД, Web, XML
6. Углубление — работа над своими проектами 6-9 месяцев. Тут важно не дергать готовые компоненты, а писать чистый С++ код.
Важно просто набить руку.

ФРЕЙМВОРК И КОМПИЛЯТОР(IDE)


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

IDE — это графическая оболочка-редактор, которая облегчает работу над созданием визуальных форм и редактирования кода.
Проблема современного программирования — излишнее многообразие фреймворков, сред и ЯПов.
Нельзя выучить все из них. Многое определяет заказчик или компания-работодатель.
Можно начать изучение с Visual C++ (среда от Microsoft), Builder C++ (Embarcadero) и Qt.

Visual C++ — это классика. Если нужно много удобных визуальных компонентов, если нужен навороченный интерфейс — берите Builder C++. Нужна кроссплатформенность — берите Qt C++.

Я начинал программировать на С++ в DOS. Тогда (в 90-х) больше и не было ничего (unix не в счет)!
Сейчас у нас есть C#.NET, Qt, wxWidgets, C++Builder, C++ VisualStudio под Windows. И не менее жирные вариации под Linux.
А если еще посмотреть в сторону Java, Android… то просто слюнки текут от возможностей.

Готовьте голову к обширному вливанию документации. Как говорят программисты — RTFM.
Учите один язык и одну среду. Учеными доказано, что программист с 3-летним опытом программирования на одном языке работает в 3 раза продуктивнее программиста с таким же опытом, но на другом языке.

ХОРОШИЕ ПРАВИЛА ПРОГРАММИРОВАНИЯ


1. Написал первую версию программы!? Выкинь и начните писать вторую версию.
2. Проектирование программы начинайте на бумаге — блоки, связи, морфология, схемы (UML)
3. Переменные самодокументируемые — bPersonNameValidity
4. 60% кода — обработка ошибок и исключительных ситуаций.
5. Разбивайте код на мелкие модули. Хорошая практика — один класс-один модуль.

КАКИЕ ОНИ БЫВАЮТ?


Разделение на системных(С) и прикладных(П) программистов.
С — знают устройство операционной системы, основы API, как работает ОС (потоки, процессы, прерывания, хуки), стараются весь код писать сами без привлечения сторонних компонент. Часто сторонники VisualStudio. Не любят создавать ПО с большими графическими интерфейсами.
П — пишут программу, использую сторонние модули и компоненты. Не вдаются в устройство ОС. Любят Delphi и Builder.

Embedding — самый профессиональный уровень. Программирование под железки — hardware. Требует знаний электроники и ассемблера. Самый высокооплачиваемый сегмент программирования.

Web-программисты — пишут код для динамических сайтов. Чаще на PHP. Дополнительно нужно знать HTML, CSS, JS и пр.

ЭПИЛОГ


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

По С++. Читаем Страуструпа. Держите его книгу под рукой.
И еще. Учи английский язык. Программисты должны уметь свободно читать на английском.
99% документации по программированию на английском. Перевода не ждите.
Названия переменных тоже называем английскими словами, заодно это комментирует код.
Если при изучении языка программирования, ты чувствуешь что продираешься через джунгли, что твои мозги вязнут в этой мути, что языковые конструкции ужасны и труднопонимаемы, и ты чувствуешь нарастающее раздражение, то вполне возможно, что это не твое. Бросай!
Программирование — это не профессия, это диагноз.
Главное, что ты — пытался, но возможно что твое призвание в другом.

P.S.


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

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

Стать программистом

Поделиться публикацией

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

    +33
    Знаю много опытных Java-программистов, которые не знают С++ потому что не пишут на нем. Про С++ — предрассудки.
      +27
      Знаю парня, который ядром Linux'a и драйверами занимается, т.е. C. Так вот, он совершенно не знает C++.
      +26
      Статистика за 2012 год? В статье для молодых программистов? Вы серьезно?
        +1
        У меня вообще по ходу чтения возникло ощущение, что статью писали лет 10 назад и только слегка подредактировали с тех пор.
        +13
        Очень абстрактно…
        Есть несколько хороших мыслей, но большая половина просто вода и вводит в заблуждение.
          +21
          Такое ощущение что автор где-то рядом с IT но не программист… и даже не веб…
          Любят VS. Часто сидят под Linux.

          НАУКА О КАСТАХ

          Вы серьезно???
            0
            Я тоже очень хотел по этому блоку пройтись, но автор его переработал :-( Хотя всё-равно осталось в статье много «странностей».
          +13
          Напоминает анекдот про математика, который начинает письмо к другу словами «Здравствуй, дорогой Вася! Пусть X — Банахово пространство...»
          Материал статьи излагается в терминах и понятиях, знакомых опытному программисту, но отдающимися шумом прибоя в ушах новичка.
            0
            Вы этот анегдот только что сами придумали (поиск находит только эту статью)? Серьезно, если напоминает анегдот, то можно дать ссылку.
              0
              Анекдот воспроизвёл по памяти, читал его много лет назад уже не помню где. Возможно, в ФИДО. В любом случае, содержание тут воспроизведено полностью и почти без искажений.
            +3
            Небольшая просьба: можно оформить текст чуть более читабельно? Отступы там, разбитие на абзацы, что бы текст не сливался в один поток… Всё-таки хороший программист как правило умеет оформлять документацию так, что бы читающим её не было больно.
              +1
              Не любят на хабре посты для новичков, говорю вам как автор подобной статьи.
              По теме поста, сам начинал изучение программирования с С++ и могу с полной уверенностью сказать, что это язык не для новичков, его надо знать если хочется программировать что-то сложнее рекламных баннеров, хорошее знание основ языка, работа с указателями и с памятью могут дать понять то, чего не понять программируя только на языках высшего уровня. Однако углубляться в изучение именно С++ стоит только если вы хотите связать с ним свою жизнь, изучить его на 100% практически невозможно, уж слишком это сложный язык.
              Согласен про Delphi, молодящийся старичок, ему пора на пенсию и уж точно не стоит того чтобы быть первым языком.
                +4
                Я начинал изучение программирования с калькулятора MK-61 (не смейтесь, это почти как ассемблер), потом был Pascal/Delphi, потом С++. Считаю С++ вполне адекватным начальным языком, только учить его надо правильно. Во-первых, не весь сразу, а во-вторых, учить именно как С++, а не «Си с классами».
                  +4
                  О, живой юзер МК-61.
                  Не было ли у вас проблемы с отваливающимися регистрами? :)
                    +2
                    Нет, не припомню такого. Как в толстенном мануале было описано, так всё и работало :)
                      0
                      Тоже когда-то юзал. Проблемы не было.
                    +2
                    думаете удалить пост? )) пока совсем не придушили.
                      –5
                      Ну как видите, я посмел высказать своё мнение в комментариях и мне уже высказали своё «фи» в виде негативной оценки. А пост, да, лучше спрятать подальше, пока до 3к просмотров не дошло, тогда магическим образом вылезает нечисть и злостно минусит вообще по любому поводу будь то «слишком много написал» или «слишком мало написал» или «сегодня полнолуние и в такое время я не хочу видеть статьи на эту тему».
                        +2
                        И поменьше капса, и не хватает глагола, видимо «стать», во фразе «кто решил кулхацкером крутым программистом», и стата некорректная, от слова совсем, и взгляд не современный :)
                        +8
                        Просто написать хорошую статью для новичков зачастую куда сложнее, чем для продвинутых юзеров. Но многие этого не понимают и просто фигачат поток своих мыслей.
                        –9
                        Ох как минусуют то )
                        Да, сыровато написал, но просто наболело.
                        Сам имею опыт программирования 20 лет.
                          –9
                          Секрет в том. что здесь свои мысли надо уметь выдавать за иностранные переводные. Тогда читают намного более уважительно, ругают автора, а не переводчика. Все же знают, что пророков нет в Отечестве своём.
                            +11
                            Ну потому что много пустого пафоса и субъективизма. Надо было хотя бы в преамбуле написать, что это личный взгляд и мнение автора. А такие вещи как «программирование — это сугубо исследовательский творческий, а не технический процесс» или «программирование — это процесс полета креативной мысли, часто выходящий за рамки рабочего дня и даже образа жизни» вообще писать не нужно было. Просто потому что это наивно и неправильно. Программирование — это сугубо инженерная работа. Пока вы молодой и незнакомы с паттернами проектирования, у вас есть чувство новизны, открытия чего-то нового, изобретения алгоритмов. Но вы сами пишете, что дескать, ваш опыт 20 лет. И что в вашей работе может быть креативного? Придумать архитектуру очередного бизнес-приложения? Вы их наизусть должны знать. Придумать пользовательский интерфейс? Да вот они, все гайдлайны. Известные вдоль и поперёк.
                            Если вдруг вам круто повезло в жизни, и вы оказались в какой-то конторе, находящейся на переднем рубеже технологий, поздравляю. Но это будет не потому, что вы программист, а потому, что вы вытащили счастливый билет.
                            И еще, не обижайте Паскаль/Delphi. Этот динозавр в свою эпоху был крутейшим инструментом, который дал путёвку в жизнь многим программистам.
                              +7
                              >>И еще, не обижайте Паскаль/Delphi. Этот динозавр в свою эпоху был крутейшим инструментом, который дал путёвку в жизнь многим программистам.
                              Многие на нём до сих пор пишут. И открою небольшой секрет, делфи до сих пор крутой инструмент :)
                                –4
                                я тоже начинал с TurboPascal under DOS ;) но с делфи быстро ушел на Builder… на ПАскаль возвращаться уже не хотелось… нынешние претензии к дельфи и билдер — очень жирные ЕХЕ… хотя сейчас все жирное.
                                Но проги написанные на дельфи легко определяю по замедленности интерфейса.
                                  +7
                                  Но проги написанные на дельфи легко определяю по замедленности интерфейса.

                                  Никогда не замечал.
                                  Все проги с замедленным интерфейсом, которые мне встречались, оказывались на Java, или .NET (реже). И то, подозреваю, это связано с кривизной рук.
                                    +6
                                    претензии к дельфи и билдер — очень жирные ЕХЕ

                                    А суммарный «вес» приложения на Qt с приложением на Delphi сравнивали?
                                    проги написанные на дельфи легко определяю по замедленности интерфейса

                                    При условии, что весь интерфейс на делфях практически обёртка над апи, как и MFC, то читать это несколько странно.

                                    Сам уже более 7 лет программист на С++. Но если нужно набросать очень маленькую утилитку для того, что бы отдать наладчикам, к примеру прога по настройке модема, или терминальное приложение по автоматическому редактированию файлов настроек embedded linux — делфи рулит больше билдера (билдер не люблю со времён борланд, говорят многое поменялось, но мне проще в студии плюсы использовать), ибо апликация на делфи полностью самодостаточна и «весит» 500-600 кб, а если ещё и upx применить — раза в два меньше. То же самое на Qt займёт от 50МБ.
                                      0
                                      У Delphi проблема в том, что если из всего класса используется только один метод из сотни — то в бинарник тянется весь класс и, соответственно, все зависимости по иерархии полностью.

                                      Не знаю, осталось ли это на текущий момент, но года два назад так и было ещё.

                                      Именно поэтому бинарники огромные, потому что для Hello world тащится ВСЯ библиотека VCL.
                                        0
                                        Не уверен, что это решило проблему, но отмечу, что с Delphi 2006 (он же BDS 4.0) есть поддержка .NET-компонентов.
                                          0
                                          Во-первых, .NET уже не поддерживается, это был Delphi.NET.

                                          Во-вторых, как бы это помогло?
                                            –1
                                            Понимаю, что .NET устарел. На тот момент, .NET был в самый раз.
                                            Не уверен, но скорее всего, Delphi тоже идет в ногу со временем.

                                            Delphi.NET — это обертка над .NET. Это не полноценная реализация .NET, а лишь провайдер, соединяющий Delphi с .NET. Это сделано для того, чтобы компоненты могли вытаскиваться на форму. В противном случае, .NET компонентами можно было пользоваться хоть на Delphi 7. Только, приходилось бы их создавать и манипулировать непосредственно из кода программы.
                                              0
                                              .NET не устарел, просто в Дельфи он больше не поддерживается.

                                              Delphi.NET делал ненативные бинарники для платформы .NET (CLR).
                                      0
                                      30Кб это жирное приложение? Смотря как делать, знаете ли. Можно и 20Мб сделать, а можно и в тысячу раз меньше. Зависит от задач.
                                        0
                                        В тысячу раз меньше — это тридцать байт?
                                        Посмотрел бы я на такое приложение.
                                          0
                                          30 байт — это в 1024 раза меньше. Кстати, ничего, вполне пригодный объем для некоторых программок в COM-формате.
                                            +4
                                            На приложение размером в 30.72 байта я бы посмотрел с ещё большим интересом.
                                              0
                                              Могу ошибаться, но реализация format.com в MSDOS, как раз, занимала около 30 байт.
                                                +1
                                                Точно, ошибался. Стало интересно, скачал DOS 6.22, там format.com занимал 23кб.
                                                  0
                                                  Даже в MS-DOS 1.0 она занимала несколько килобайт: www.egazete.de/wp-content/uploads/2014/03/dos1.jpg
                                                    0
                                                    Давно это было, когда учился еще в школе. Вспоминаю.
                                                    По всей видимости, речь шла не о самой format.com, а о том, что можно набрать в .com-файле, что бы выполнилось что-то вроде format.com c: /q. Из рабочих инструментов Norton Commander и Turbo Pascal. А сам DOS был урезан на вредные утилиты типа format.com.
                                                    На чистом ассемблере без help-а и парсинга параметров вполне могла уместиться в килобайт.
                                                      +1
                                                      На Turbo Pascal сделать программу в 30 байт нельзя, в силу того, что во-первых он умеет компоновать только exe-файлы (по крайней мере, если не брать в расчет самые первые три версии), во-вторых, он все равно впихнет в бинарник базовые структуры модуля System, и несколько килобайт это займет.
                                                      На чистом ассемблере… если просто в цикле вызывать int 13h с подфункцией форматирования для всех цилиндров/головок накопителя, то думаю байт 20 вполне хватит для такой чудо-программы.
                                                        0
                                                        Эта функция вызывает соответствующую команду накопителя, а они уже давным давно её банально игнорируют, наверно уже не осталось в мире таких винчестеров которые по честному выполняют команду форматирования(это наверно все винчестеры объёмом не более 300Мб). Это так называемое низкоуровневое форматирование.
                                                        А нам нужно уничтожение данных… а это запись напрямую в сектора и создание чистой главной директории и чистой FAT.
                                                          0
                                                          По-моему, мы просто обсуждали, сколько байт могло понадобиться для простой утилиты форматирования во времена DOS, а не о том, чтобы грохнуть винт :) Мы даже не говорили о том, что надо было форматировать винт, а не дискету, например.
                                                            0
                                                            Форматирование через 13-е прерывание и есть банальное уничтожение данных. Оно не создаст автоматически FAT на диске.
                                                          0
                                                          Зачем Turbo Pascal?

                                                          Тут нужен всего-лишь hex-редактор. Программу набирали вручную, списывая код с листочка (так как дисководы были отключены).
                                                            +2
                                                            Не нужен никакой HEX-редактор… любой редактор способный сохранить файл без форматирования и не реагирующий на спецсимволы. ALT+<код> на цифровой клавиатуре.
                                                          +1
                                                          Фига… не больше сотни байт.
                                                          Всего-то загрузить в регистр указатель на область памяти с мусором(опционально можно выделить и очистить нулями) размером 512 байт, инициализировать регистры нужными значениями(код функции, начальный сектор диска) и вызвать int 13h фунция 03h(по-простому но медленно, или 0Bh побыстрее но мороки больше) в цикле по всем секторам и дорожкам диска(функция 08h). В конце цикла вызвать INT19h и аллес…
                                                          Всё это укладывается менее чем в 100 байт COM-файла. Помешать может только защита записи в 0-й сектор на уровне BIOS-а или хитрый резидентный антивирусник перехватывающий 13-е прерывание который не даст затереть загрузочный сектор и FAT.
                                                            –1
                                                            Вот я и говорю, переписывали содержание «format.com» на бумажку, и по бумажке набирали содержание «format.com» через hex-редактор.

                                                            В те времена, в школе дисководы были отключены, а дома даже принтер — это уже роскошь!
                                                            Приходилось переносить .com-файлы ручками через бумажку.
                                                              0
                                                              Все 23КБ через бумажку переносили?
                                                                0
                                                                зачем? там без help-а и разбора параметров легко уложишься в 100 байт. А то и в 50!
                                                                  0
                                                                  Издеваетесь что ли?
                                                                  Исходники MS-DOS 2.10
                                                                  FORMAT.ASM занимает 46КБ, 1627 строк, из них разбор параметров — примерно 80 строк. Хелпа в той версии не было вообще.
                                                                    0
                                                                      0
                                                                      В комментарии Alexeyslav — программа, затирающая служебные сектора мусором.
                                                                      В вашем комментарии — «format.com без help-а и разбора параметров»
                                                                      Надеюсь, вам не нужно объяснять, что format.com — это не просто «программа с хелпом и разбором параметров, затирающая служебные сектора мусором»?
                                                  +2
                                                  Если 20Мб \ 1000 = 30 байт, то я уже и не знаю.
                                                0
                                                Так в билдере те же библиотеки, как можно определить что оно на дельфях?
                                                  0
                                                  cmdline-приложения отнюдь не были жирными. Полагаю, основной объём exe-шника простого приложения — вкомпиленные части VCL. И то получалось и даже сейчас получается сравнительно компактно, если сравнить с exe-шником такого же приложения, скомпилированным в том же Lazarus.
                                                    +2
                                                    Потому что RTTI-фреймворк. Когда предполагается, что компоненты будут динамически создаваться прямо в рантайме, причём возможно с подгрузкой из внешнего источника, линкер не может выкинуть всё то, что не используется приложением, ведь оно может понадобиться. Отсюда в бинарник попадает очень много неиспользуемого кода. Кардинально проблема решается лишь отказом от высокоабстрактных фреймворков.
                                                    В том же Delphi, если создавать приложения без VCL, на чистых API или с использованием альтернативных фреймворков, получалось очень компактно, по крайней мере на момент начала 2000-х годов вполне сравнимо с C++ компиляторами от Microsoft. На Delphi даже 64Кб-демки писались (создать окно через WinAPI, подключить OpenGL и вперёд).
                                                    Более того, Delphi был вполне пригоден для системного программирования. Во времена Win98 мне даже доводилось на нём VxD-драйвер писать. Для этого отключалось всё лишнее, вплоть до кода инициализации/финализации приложения (Delphi позволял и это!), объявлялись внешние символы, а среда настраивалась на создание obj-файла, который потом преобразовывался в VxD при помощи линкера из комплекта Win 98 DDK.
                                                      +1
                                                      Простите, не удержался. В 2005м на делфи как раз таки пробовал что-то собрать типа демосцены. Вышло 163Кб, правда из них сто тридцать музыка жрёт.
                                                      batteryeater.com/temp/sota.zip
                                                        +1
                                                        В трекерном модуле больше всего места занимают сэмплы. Я бы для уменьшения размера заменил MiniFMOD на uFMOD, предварительно сохранив сэмплы с использованием APDCM и обработав трекерный модуль XMStrip.
                                                        Ну а вообще, конечно, самый труЪ-способ — линковка трекерного модуля вообще без сэмплов, которые потом генерируются в рантайме при помощи FM-синтеза. Раньше по этой тематике можно было найти множество статей, сейчас же в связи с резким падением интереса к демосцене (бабла же она не приносит, а современные кодеры даже вирус не сядут писать без предварительно составленного бизнес-плана), большинство ресурсов уже умерло вместо со всем содержимым.
                                                        +1
                                                        VCL в общем-то у них тоже не очень-то жручий. У меня вполне себе на нём получалось писать не особо сложные прикладные программки со стандартными компонентами без интерфейсных наворотов; exe получались объёмом меньше мегабайта (на Delphi 2009). При этом можно было отдельно положить в дистрибутив bpl-ку с VCL (у 2009 она чуть больше мегабайта размером), и тогда exe занимал вообще десятки килобайт. Сейчас делаю на нём системные службы для выполнения некоторых задач на Windows-серверах. Язык в целом нравится: строгая типизация дисциплинирует, возможностей ООП для большинства задач ИМХО вполне хватает.
                                                  0
                                                  И еще, не обижайте Паскаль/Delphi. Этот динозавр в свою эпоху был крутейшим инструментом, который дал путёвку в жизнь многим программистам.

                                                  Darthman всё верно говорит про современное использование.
                                                  Именно так, например, известный и популярный плеер для Windows уже кроссплатформенный — AIMP как раз на Delphi написан.
                                                    +2
                                                    Полистал сайт AIMP-а. Кроссплатформенность это наличие плеера под Android?
                                                      0
                                                      Да и версия 2.0 переводится на общую кодобазу с виндовым вариантом.
                                                        0
                                                        Кто это Вам сказал? Мне вот автор AIMP'а подсказывает что никакой общей кодобазы нет.
                                                          0
                                                          Хм, странно, видимо я ошибся и перепутал с другим проектом.
                                                +9
                                                Спорная и консерваторская заметка.
                                                Напоминает старческий хрип.
                                                  –7
                                                  согласен что спорная… тема очень холиворная, я же предупреждал вначале.
                                                  но для новичков тут много бесценного материала. Дальше они сами найдут свой путь.
                                                  P.S. и да… кхм кхм…
                                                    +5
                                                    Насчет «много» — спорное утверждение. Как минимум не упомянуто модульное тестирование и функциональные языки программирования (Haskel, Erlang...). Да и веб-разработку Вы как-то ограничили только PHP.
                                                    Опять же какие-нибудь относительно новые языки типа Clojure, Scala, Go, Rust не были упомянуты.
                                                    А необходимость знать C++ — довольно спорное утверждение. Много тонкостей которые актуальны, только при его использовании как основного языка. Без их знания читать код написанный профессиональными программистами будет сложно, а на их изучение нужно много времени, которое лучше потратить на более детальное изучение понравившегося языка.
                                                    И конечно прикладному программисту стоит изучить и попробовать несколько языков, чтобы уметь выбрать более подходящий для решения той или иной задачи :)
                                                      +5
                                                      для новичков тут много бесценного материала

                                                      Простите, но это хвастовство.
                                                      То, что вы пытались рассказать в статье, давно написано в первых 5 главах (специально проверил) у Макконнелла.
                                                      Причем написано гораздо лучше и без восхваления одного языка и опускания других.
                                                    0
                                                    Автор — явно дельфист. Написано много, когда написать можно было то же самое, но в три строчки.
                                                    И это ж надо перепутать C и C++.
                                                      +2
                                                      не дельфист. Но VCL-щик. Хотя есть проекты и на QT и Java и на С++ под Linux.
                                                      А что я перепутал с С и С++?
                                                        +1
                                                        И вот опять… Перепутал Qt и QuickTime (aka QT).

                                                        :-)
                                                          –5
                                                          не дельфист

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

                                                          А что я перепутал с С и С++?

                                                          Ну, всё, что ты написал про C++, относится к C. То есть ты не знаешь разницы между этими двумя разными языками.
                                                        +1
                                                        Мир на C++ клином не сошелся. Да, это основной системный язык на данный момент. Но как язык — он не очень. Скорее всего в долгосрочной перспективе будет замещен чем-то другим.

                                                        А про производительность — чушь. Нередко та же Java обгонит программу на С++ за счет статистического анализа. Или, во всяком случае, отработает не хуже.
                                                          –4
                                                          Согласен. Мир клином не сошелся. Но много лет подряд C++ был практически панацеей, потому что ничего больше не было. Сейчас есть выбор!
                                                          Но обратите внимание, что операционные системы продолжают почему-то писать на С++.
                                                            +1
                                                            Потому-что они уже были написаны на плюсах и переписывать нет смысла?

                                                            Существует полно ОС (написанных в учебных целях), написанных, например, на расте. Но вообще написание ОС — ну очень специфическая задача.
                                                              +5
                                                              Единственная операционная система на C++ из распространенных — Symbian, и она уже давно мертва
                                                                0
                                                                Да он даже не разбирается, где какой язык.
                                                                +2
                                                                Про операционные системы написанные на С++ это Вы Линусу скажите. Привести его цитату про плюсовый код в ядре Линукса? :)
                                                                  0
                                                                  Он, кстати, это сказал ещё в 2007 что ли году. И, кстати, многие мнения о C++ сложены на основе стандартов C++98/03
                                                                +1
                                                                Статический анализ чего и как это связано с производительностью Java?
                                                                  +1
                                                                  статистический анализ, было сказано. Анализируется статистика выполнения программы в рантайме и под нее модифицируется машинный код, например, инлайнятся процедуры.
                                                                    +1
                                                                    Пардон, оговорился. Статистический анализ ветвлений в коде, типов передаваемых аругментов и вызываемых методов. JIT-компилятор Java в процессе исполнения меняет исполняемый байткод с учетом этих данных. Причем в процессе работы сгенерированный байткод может меняться многократно.

                                                                    Допустим у вас есть сервер, который примиает POST и GET запросы (представленные разными классами на уровне кода приложения). И какой-то кусок кода, который в зависимости от запросов что-то делает.
                                                                    Если вы на такой сервер в рамках-стресс теста натравите непрерывный поток POST-запросов, то JVM может решить перекомпилировать некоторые методы под оптимальную обработку конкретно POST запроса (возможно в ущерб производительности GET-запросов).
                                                                      –2
                                                                      Такой анализ, который вы описали, стоит дороже чем выигрыш от каких то потенциальных оптимизаций по его результатам
                                                                        +1
                                                                        Смотря какой временной интервал рассматривать.

                                                                        PS: Разработчики Java JIT как бы не дураки и тоже это учитывают. В частности, тот код, который выполняется всего несколько раз — даже не компилируется в байткод, а просто интерпретируется.
                                                                    +9
                                                                    Основной системный язык, пожалуй, Си, а не плюсы.
                                                                      0
                                                                      Сейчас много хайпа по переходу эмбеддеда на C++14 (не Си). Мол, эффективнее.
                                                                    +6
                                                                    Кажись автор так и остался в том самом 2012(а может и раньше) году.
                                                                      –12
                                                                      прошло всего-то 3-4 года… ))) мир программирования быстро не меняется.
                                                                      к тому-же свежая статистика такая и осталась.
                                                                        +1
                                                                        обновил на свежую статистику )
                                                                          +7
                                                                          А в чем причина выделения C/C++/C#/ObjC в единую группу? Разные языки же.
                                                                            –8
                                                                            я счел, что для новичков их можно объединить… хотя это принципиально различающиеся языки.
                                                                              +13
                                                                              Я прошу прощения, а зачем вы для новичков даете советы, которые в корне неверные, и вредные? Начнём с того, что даже С и С++ — это принципиально разные языки, и сейчас они имеют различные сферы применения. Но вы зашли дальше, и поставили «бок о бок» С++ и С# (!)
                                                                              Вы делили по идеологии разработки? А почему тогда Паскаль выделили в отдельную группу? Между С++ и Паскалем общего намного больше, чем между С++ и С#. По синтаксису? Тогда почему же Java и РНР почему-то от группы С-подобных языков отделили? Тем более что Java вообще функциональный аналог С#, ну разве что с более куцым набором языковых средств. Судя по всему, вы лишь одну логическую связь между этими языками установили — по наличию буквы С в названии. Но делать такое «упрощение» для новичков — это издевательство над неокрепшими мозгами.
                                                                                +1
                                                                                Не хочу показаться занудным, C# появился позже Java, так что скорее он является аналогом Java. И давно ли Java стал функциональным? Java, в первую очередь, объектно-ориентированный язык.
                                                                                  +2
                                                                                  «Функциональный» в моей фразе не в смысле наличия возможностей функционального программирования, а в смысле сходной области применения и сходной парадигмы разработки приложений. C#, впрочем, также как и Java, в первую очередь объектно-ориентированный язык, с расширениями для функционального программирования. Например, лямбда-выражения уже и в Java есть. А так да, по старшинству приоритет за Java :)
                                                                                    +1
                                                                                    Прошу прощения, не правильно понял «функциональный» :) В указанном смысле с Вами полностью согласен.
                                                                      0
                                                                      Спасибо конечно за статью, но уж сильно жестко и абстрактно вы завернули )) Если целью было напугать юнных дарований, чтобы проверить их желание — думаю у вас получилось )) в остальном — очень абстрактно и субьективно. Больше примеров и полезных советов — и было бы норм ))) не учитывая провакиционный характер статьи, который так и тянет начать холивар ^_^
                                                                        –3
                                                                        а я специально пугаю… потому что много развелось псевдопрограммистов…
                                                                        ко мне устраиваться таких приходит море.
                                                                          +3
                                                                          Ну, тут я не согласен. Это попахивает каким-то, извините меня за сравнение, «фашизмом».
                                                                          Если разделять людей на классы и касты, вешать на них ярлыки и оценивать по возможностям — можно прийти к гитлеровскому подходу — «оставить одних правильных, а всех остальных фтопку!!! ЗИГ ХАЙЛЬ!!!» ))
                                                                          Все люди разные, у каждого разные возможности и разное мышление. Ровно как и направлений в разработке множество, так почему говорить, что те кто не знает C++ конченные?
                                                                          Я бы согласился, если бы вы написали именно с таким мнением, что не все могут работать с С\С++, равно как и с ассемблером и вообще даже с аппараткой. Но это не делает их конченными программистами, они просто другие. У меня есть парочку примеров людей, которые виртуозно работают с C++, но как-то решились попробовать себя в веб-разработке и потерпели фиаско, только потому что тут подходы разные. И я думаю многие могут такие примеры привести. Так что называть людей псевдопрограммерами и тем более указывать им на то, что если они не разобрались в указаниях данного «майн кампфа» им надо выйти вон — очень не этично, я бы даже сказал бестактно.
                                                                          А вот сказать им в таком ключе «Ну вот не получается у вас делать качественные приложения на C\C++, может стоить попробовать себя в другом? Есть много вариантов и альтернатив. И честно говоря, не каждый кто будет прилагать тонну усилий в течение 20 лет станет гуру.» — было бы намного тактичнее, и как сейчас модно говорить, толерантно. У всех разные возможности и способности. Но это не значит что один убогий и его надо сжечь на костре, а другой — опора мира разработки.
                                                                          Вроде все сказал))
                                                                          P.S. Извините, пожалуйста, за сравнение с фашизмом и за все, что с ним связано, но я просто не смог найти другого сравнения. Очень мне напомнило именно расистский подход.
                                                                            +3
                                                                            ко мне устраиваться таких приходит море.
                                                                            Пожалуйста уточните, «ко мне» — это куда?
                                                                          +5
                                                                          Зачем учить C++, если есть C?
                                                                            –4
                                                                            Зачем учить С, если есть D?
                                                                              +1
                                                                              Напрасно гиперболизируете. Зачем именно С++, а не С? Что такого есть в плюсах, чего нет в голом си, и что должен знать высокоуровневый программист для понимания работы памяти, указателей, компиляторов? Уж не ООП ли вы рекомендуете постигать на примере С++?
                                                                                +1
                                                                                На С++ больше вероятность потом писать реальный код, например.
                                                                                  +2
                                                                                  Нет, с точки зрения обучения, зачем С++? Чему такому он может полезному научить, чему не могут научить другие языки? Для низкоуровневости подойдет си, для высокоуровневости питон/шарп/ява.
                                                                                    +1
                                                                                    С++ и для высокоуровневости подойдёт.

                                                                                    С точки зрения обучения отличный язык, можно совмещать и низкоуровневость, и высокоуровневость.
                                                                                      0
                                                                                      Думаете высокоуровневость правильнее всего учить на С++ вместо мною названных? Хотите отбить желание человеку?
                                                                                        +1
                                                                                        Чем отбить-то?
                                                                                          0
                                                                                          серьезно? Почитайте «the dark side of c++».
                                                                                            +1
                                                                                            Открыл слайды. Warm-up — пример нечитаемого сообщения об ошибке. Подумал, что надо автору рассказать про современные компиляторы:
                                                                                            Например
                                                                                            In file included from /usr/local/libcxx-3.7/include/c++/v1/list:177:
                                                                                            /usr/local/libcxx-3.7/include/c++/v1/algorithm:3848:40: error: invalid operands to binary expression ('std::__1::__list_iterator<std::__1::basic_string<char>, void *>' and 'std::__1::__list_iterator<std::__1::basic_string<char>, void *>')
                                                                                                    difference_type __len = __last - __first;
                                                                                                                            ~~~~~~ ^ ~~~~~~~
                                                                                            



                                                                                            Захотел закрыть слайды, но героически продолжил. Наткнулся на слайд «Ever-Changing Standard». Автор либо не знает, о чём пишет, либо намеренно врёт, и я не знаю, что хуже: в окрестности 97-го года вышли только C++98 и C++03, и я сомневаюсь, что время жизни переменных из for-цикла, пространства имён и стиль именования заголовочных файлов изменились между этими двумя стандартами.

                                                                                            На слайде «C++ is hard to parse», втором, где препроцессорная лапша, вообще как бы вроде бы и чистый C, непонятно, причём тут ++.

                                                                                            Таки закрыл слайды.
                                                                                              0
                                                                                              Я не понимаю, что Вы пытаетесь сказать. Что порог вхождения в высокоуровневость с помощью С++ такой же, как и с помощью шарпа/явы/питона? И что высокоуровневость эффективнее учить именно на плюсах?
                                                                                                +1
                                                                                                Что эффективно начинать учить с плюсов. Всякий, выучивший C++, сможет потом спокойно писать на шарпе/яве/питоне. В обратную сторону оно работает как-то не так эффективно.
                                                                                                  +2
                                                                                                  Соглашусь. Всякий, научившийся водить уазик, легко пересядет на лексус с автоматом и камерой заднего вида. Поэтому в автошколах мы не видим уазиков, но и выпускники в свою очередь не станут профессиональными гонщиками.

                                                                                                  То есть у С++ выше порог вхождения, но эффективность результата того стоит.

                                                                                                  Другими словами, Вы хотите сказать, что лучше отбить желание, чем воспитать очередного недоучку? Если так, то я согласен с этой позицией.
                                                                            0
                                                                            По-моему, с какого языка начинать (и какими языками продолжать) — наименее важное, что должно интересовать начинающего программиста.
                                                                            Разница в производительности между программой, скомпилированной разными компиляторами — проценты. Ну, может, десятки процентов.
                                                                            Разница в производительности между программой, написанной криворуко и программой, написанной грамотно — разы и порядки.
                                                                              –1
                                                                              а я и не пишу что С — панацея.
                                                                              Я вообще рекомендую начать с Паскаля, потом перейти на С… потом уже можно или Ява или Пайтон или чего душа пожелает…
                                                                              С, ИМХО, неплохая стартовая площадка!!!
                                                                                –6
                                                                                Я стерпел С/С++/Obj-C
                                                                                Я стерпел путанье языка(делфи) и IDE(Builder)
                                                                                Но это! Ява — остров, Джава — язык!
                                                                                  +2
                                                                                  Немного позанудствую :) Остров называется Java по-английски и Ява по-русски. Названный в честь него кофе называется так же. Почему тогда вдруг названный в честь кофе язык программирования должен называться иначе?
                                                                                  Delphi, кстати, это IDE. Понятие «язык Delphi» появилось уже спустя семь или восемь версий этой IDE.
                                                                                    –1
                                                                                    Понятие «язык Delphi» появилось очень и очень давно (c седьмой версии IDE, если мне не изменяет память).
                                                                                      +3
                                                                                      А вы до конца прочитали последнюю фразу в моём предыдущем комментарии? ;)
                                                                                        0
                                                                                        Угу. Delphi, на данный момент, в первую очередь — язык.
                                                                                          0
                                                                                          А почему «в первую очередь», а не в какую-то другую? Есть IDE, которая были изначально, ещё до «объявления о появлении языка», и которую никто не отменял после его появления. И помните, как много лет кряду новичков, которые говорили «язык Delphi», тыкали носом, что нет такого языка, что это IDE, пока им Борланд не пошла на уступки? Разве с этого момента что-то поменялось, и Delphi IDE исчезла? Нет, вроде бы. Если вы поставите современную Embarcadero RAD Studio, она вам также создаст ярлычки конфигураций Delphi XE<чего-то там> и С++Builder XE<чего-то там>.
                                                                              0
                                                                              Программирование — это процесс полета креативной мысли...
                                                                              Эх, лучше Фредерика Брукса вам всё равно не сказать, а он писал (я, с вашего позволения, оставлю язык оригинала):

                                                                              «The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by exertion of the imagination...»
                                                                              Написал первую версию программы!? Выкинь и начните писать вторую версию.
                                                                              А потом выкинь и её. Именно вторую версию и надо выкидывать. Опять же из Брукса:

                                                                              «This second is the most dangerous system a man ever designs. <...> The general tendency is to over-design the second system, using all the ideas and frills that were cautiously sidetracked on the first one. The result, as Ovid says, is a „big pile.“

                                                                              Из того, с чем могу согласиться — Паскаль — хороший учебный язык.
                                                                              Рекомендация читать Страуструпа — довольно жестокая, в том смысле, что книга не простая. Я сделал первый подход к этому снаряду лет двадцать назад, но так и не осилил до сих пор (впрочем я не пишу на этом языке). Для изучения С++ есть более подходящие книги (но не „изучи С++ за двадцать один день“, конечно же). Лучше Кернигана и Ричи прочесть.
                                                                              Вообще, чтобы стать программистом, надо просто иметь „инженерный“, живой и в какой-то мере чуть „хакерский“ склад ума и, самое главное, научиться учиться, так как суть программиста в непрерывном обучении и адаптации к постоянно меняющимся технологиям и требованиям к ПО, ну а всё остальное приложится.
                                                                              Есть области программирования, к которым всё, что вы изложили, применимо с большим трудом (ну я вот, начав с программирования на DEC PDP11, теперь программирую машинное зрение и промышленную автоматику, и при этом это не эмбеддинг — у меня свои узкоспециализированные инструменты и библиотеки — ну каким боком ко мне все эти фрейморки и ЯП относятся ?).
                                                                                0
                                                                                K&R это ж чистый «С» или я что-то упустил?
                                                                                Кстати, имея большой опыт в плюсах (не считаю себя гуру, но и не новичёк) так и не могу осилить Страуструпа, а вот Майерс был прочитан на одном дыхании и сильно вправил мозг в нужное русло избавив от многих ошибочных привычек, так что я бы порекомендовал его книги, но не как учебники, а постучебный материал.
                                                                                  0
                                                                                  Да, конечно, я просто неясно выразил мысль. Я не имел ввиду книгу для изучения С++, а книгу, которую имеет смысл прочитать в начале пути программиста. Она хоть и полностью о языке С, но изложение материала там настолько приятное и последовательное, что она реально учит не только С, но и программированию вообще.
                                                                                +7
                                                                                берите QT C++.

                                                                                Фреймворк называется Qt.
                                                                                Переменные самодокументируемые — szPersonName

                                                                                Это Вы в C++ рекомендуете такую нотацию использовать? Для QString например? :) От венгерской нотации сейчас в ходу остались разве что «m_» для членов класса…
                                                                                  +13
                                                                                  Какой-то сборник предрассудков и просто глупостей. Очень много громких фраз (чего только стоит само слово «Канон»), высосанных из пальца. Да ещё и эти «настоящие программисты», аки «настоящие мужуки». Моё мнение: ТАК нельзя писать статьи для новичков. Да ещё и подача информации сильно страдает: «мультиреляционный», «инкрементировать», «компилятору», «набор макросов от ассемблеристов» и т.д… Вы для кого пишете? Для зелёных страждующих нового первашей, которые такие слова первый раз в глаза видят, или для выпускников или уже действующих программистов?

                                                                                  Зачем то привязались к C++. Очень позабавил рейтинг tiobe. Ради интереса вбил на местном hh слова c++, php, javascript. Нетрудно догадаться, каких вакансий было больше. А у вас там на web выделено 6%. Зачем то долго и муторно «опустили» Delphi (я и сам его недолюбливаю, но писать про него такие глупостистранности точно бы не стал).

                                                                                  Моё личное мнение: в качестве первоначального языка, для завлечения и скорости понимания самой сути, нужно брать несложный для понимания язык высокого уровня. Чаще всего берут python, если я правильно уследил за новостями в этой области. И мне кажется это отличный выбор. Уже затем нужно копать в сторону ручного управления памяти, семафоров, регистров и пр…

                                                                                  ИМХО: в статье есть несколько разумных доводов (вроде того, что в ВУЗах не учат программировать, этому приходится учиться самостоятельно). Но большая часть статьи всё же сильно попахивает. Статьи для новичков НЕЛЬЗЯ писать в стиле, «слушайте сюда пацаны, запоминайте и мотайте на ус, сурьёзный дядя вам щас всё объяснит».
                                                                                    –8
                                                                                    каждый кулик свое болото хвалит…
                                                                                    Статья для тех кто уже в IT, и в терминологии немного шарит.
                                                                                    Такий вводный курс, так сказать… мутный, согласен, но вводный.
                                                                                      +6
                                                                                      Статья для тех кто уже в IT, и в терминологии немного шарит.
                                                                                      Такий вводный курс, так сказать… мутный, согласен, но вводный.

                                                                                      Одно противоречит другому. Если люди уже «в IT», то зачем им вводный курс?
                                                                                        0
                                                                                        Слушайте, а вам что, точек слишком много завезли? Чего вы ими разбрасываетесь?
                                                                                      +12
                                                                                      «Не писал на С++ — не мужик!»
                                                                                        +4
                                                                                        Я, наверное, все-таки спрошу. Скажите, а написанное в статье (например, «программирование — это» или «настоящий программист — это») основано только на вашем личном мнении, или вы можете сослаться на какие-то независимые источники?
                                                                                          0
                                                                                          мое личное мнение.
                                                                                          настоящих программистов наверно выдумал… это как некий идеал, к которому надо стремиться. )
                                                                                            +8
                                                                                            Ну а раз мы говорим о личном мнении, то лично мне бы не хотелось ни стремиться к выбранному вами идеалу настоящего программиста и определению программирования, ни видеть такие стремления у новичков — потому что, в рамках моего личного мнения, это губительный идеал.
                                                                                              +1
                                                                                              А я так и не понял, какой там идеал.
                                                                                                0
                                                                                                Я, кстати, тоже. По мне идеал в программировании — это меньше работать, меньше писать код. В идеале просто говорить машине: сделай мне вот это и вот это. Но это увы, недостижимый идеал.
                                                                                                  +1
                                                                                                  Да ну, скучный идеал. Вот писать меньше boilerplate — это да.
                                                                                                  +3
                                                                                                  Мне хватило вот этого: «уже запуская программу на исполнение, «правильный» программист прекрасно знает, как она выполнится, потому что до этого она словно «проиграла как музыка» в его голове.»
                                                                                                    +1
                                                                                                    Настоящий, «правильный» программист — он как бесконечный разум из «Теории доказательств» Гаиси Такеути.
                                                                                                    Он способен перебрать бесконечное множество строчек кода за конечное время.
                                                                                                    Перед таким — трепещи аналитик, от такого — беги прочь тестировщик, сторонись его ПМ, избегай его заказчик.
                                                                                              –3
                                                                                              Вы, батенька, ни разу не программист, а упитанный тролль, вы просто ничего не поймете из статьи пока не начнете программировать, а вы никогда не начнете.
                                                                                              +2
                                                                                              Зря всё-таки паскаль похоронили. С++ конечно мощь, но в нём сложнее ошибки искать за счёт хитрых конструкций символов «в одну строчку» как это любят делать профи. Разница-то в языках только в буквах, и если бы на начальном этапе больше сил приложили на развитие паскаля то именно он стал бы системным, но сейчас ничего уже не исправить — слишком он стал далёк от системного.
                                                                                                +5
                                                                                                Профи-то как раз таких «хитрых конструкций» избегают и пишут очень понятно. Конструкции громоздят энтузиасты, с восторгом осваивающие язык и вообще программирование.
                                                                                                +8
                                                                                                Статья мне почему то напомнила журнал «хакер» начала 90х. Очень субъективно, но стиль похож. Такой панибратский, с не совсем удачными попытками имитировать разговорную речь, частыми зачеркиваниями, спорными шуточками и т.п.

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

                                                                                                Программирование — это сугубо исследовательский творческий, а не технический процесс.

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

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

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

                                                                                                При этом «Самое главное умение в программировании, это научиться воспроизводить (исполнять) код в уме.» — достаточно верное замечание.

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

                                                                                                Только плохие учителя утверждают, что не могут кого-то чему-то научить, если у ученика есть желание :-)
                                                                                                Но при этом опять же соглашусь, что «что бы учиться плавать — надо плавать». Но так это ко [b]всем профессиям[/b] относится! Чем тут программисты особенные?

                                                                                                Программист — это человек, который не только пишет программы, но и у которого они работают.

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

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

                                                                                                На данный момент, только С++ дает самый быстрый и оптимизированный код под нативную родную платформу.

                                                                                                Именно поэтому видимо постоянно пытаются написать более безопасные языки-альтернативы C++.
                                                                                                А игры на каком-нибудь Unity могут летать на бОльшей части актуального железа. При том что программист, пишущий её, не напишет ни строчки кода на C++. Да, конечно нативный код будет быстрее, но скорость написания программы тоже играет роль, а управляемые языки вполне могут выдать достаточную скорость. Ну ок, выдаст игрушка на 90% компьютеров не 110 FPS, а 100 — велика ли потеря, что бы отказываться от удобства?

                                                                                                Теперь посмотрим на мировую статистику за 2015 год, так на чем все-таки пишут программы?

                                                                                                А теперь посмотрим на какой-нибудь HH по городу Екатеринбургу. 8 вакансий на С++ из 180.
                                                                                                Специально взял не Москву/Питер, а нечто поменьше. Остальное — C#/Java/PHP/Ruby/Python и даже 1С.

                                                                                                Пункт «ФРЕЙМВОРК И КОМПИЛЯТОР(IDE).» вообще не ясно зачем тут. Новичок, погрузившийся тему весь этот блок узнает в течении пары-тройки в день.

                                                                                                ХОРОШИЕ ПРАВИЛА ПРОГРАММИРОВАНИЯ
                                                                                                1. Написал первую версию программы!? Выкинь и начните писать вторую версию.

                                                                                                Кажется, это ПЛОХОЕ правило программирования. Рефакторить нужно, а не выбрасывать.

                                                                                                2. Проектирование программы начинайте на бумаге — блоки, связи, морфология, схемы (UML)

                                                                                                Не встречал в реальности ни единого разу. Обсудить работу чего-то конкретного, почеркать на доске или листочке? Было. Ну да я не на C++ пишу, а на C#/Java, куда уж мне…

                                                                                                Блок «КАКИЕ ОНИ БЫВАЮТ?» тоже ни к селу ни к городу и содержит местами откровенный бред.

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

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

                                                                                                  Я дико извиняюсь, но это что, венгерская нотация? Вот эта вот b перед именем — это bool?
                                                                                                    0
                                                                                                    или byte?
                                                                                                      0
                                                                                                      Это даже хуже.
                                                                                                      Учитывая, что переменная вроде как «валидность имени», то оно, наверное, или валидное или не валидное; bool как-то больше подходит.
                                                                                                        +1
                                                                                                        Согласен. Вроде и информация о типе, но ещё и сомнения вносит. Я из префиксной нотации использую только: g_ для глобальных переменных, s_ для статических в единице трансляции и m_ для приватных членов класса.
                                                                                                          0
                                                                                                          Кто-то ещё использует t_ для имён параметров функции, встречал такое.
                                                                                                      0
                                                                                                      Венгерская нотация — зло.

                                                                                                      Правильнее было бы назвать как-то вроде IsPersonNameValid / is_person_name_valid /… (стиль именования выбирайте сами)
                                                                                                        0
                                                                                                        Я своим комментарием именно это и хотел сказать, собственно.
                                                                                                          +1
                                                                                                          Она не зло, просто перевели неправильно и поняли неправильно. IsPersonNameValid — это как раз пример венгерской нотации — здесь Is и есть тот префикс.
                                                                                                          Исходники венгерской нотации от Спольски.
                                                                                                            +1
                                                                                                            То, что изначально этот венгр имел в виду другое, тоже слышал. Но я как раз об употреблении венгерской нотации в общепринятом смысле.
                                                                                                              0
                                                                                                              Is — это не «префикс», это обычное слово английского языка.
                                                                                                                +1
                                                                                                                Это семантический префикс, обозначающий смысл переменной.

                                                                                                                Туда же разница между Create и Get у функций, например, или какой-нибудь pxFontSize против ptFontSize.

                                                                                                                Хотя, впрочем, в современных языках со строгой статической типизацией это всё не нужно.
                                                                                                                  +2
                                                                                                                  В таком случае Valid — семантический суффикс, обозначающий смысл переменной, ну и так далее.
                                                                                                          +8
                                                                                                          Да-а… Одна фраза
                                                                                                          С++ — это минималистичный язык, возникший как набор макросов от ассемблеристов.

                                                                                                          в этой статье чего стоит…

                                                                                                          Насколько Страуструп ассемблерист, настолько и С++ минималистичный ЯП.
                                                                                                            +4
                                                                                                            Вспомнилось вот это.
                                                                                                              +1
                                                                                                              Будучи С++-программерами, они с ужасом вспоминали про Паскаль и больше не имели желания на нем программировать.

                                                                                                              вы будете компилировать гигантского размера программы

                                                                                                              Это говорит только о неумении использовать инструмент. Даже в почти последней ХЕ8 можно создавать приложения по 30Кб весом без особых сложностей. А вот плюсовые приложения, не запускающиеся без гиганских С++ редистрибьютейблов это, увы, реальность. Зато ЕХЕ маленькое.
                                                                                                                0
                                                                                                                C++ Runtime можно тоже статично вкомпилировать и будет использоваться то, что нужно.
                                                                                                                +4
                                                                                                                Волков бояться в лес не ходить. Брал в комманду новичков и буду брать. Никогда не забывай как помогали тебе и давали шанс набраться опыта, спасибо им, особенно Андрею Сорокину — земля пухом тебе Андрюша. Понятно никто им не давал архитектуру закладывать, но на подхвате, вполне справлялись, а главное, старались. Не то что бы красотой кода затмевали, но работало, а если работало плохо показывали как правильно, книжки давали, код показывали, заставляли переписать, учили. И молодежи польза и «старикам» рутины поменьше. А набраться самому опыта а потом с высока посматривать, лучше помоги чем можешь. Они ведь не претендуют на зарплаты архитектов.
                                                                                                                п.с. Поэтом может он не быть а программистом станет.
                                                                                                                  0
                                                                                                                  Я начинал учиться именно с плюсов, точнее с си по книге Кернигана/Ричи и потом плюсы с ооп. Джава, пхп, перл, жс потом зашли отлично.
                                                                                                                    +5
                                                                                                                    Если бы вы начали учиться с Паскаля, Бейсика или кодов МК-52, результат был бы абсолютно таким же, уж поверьте.
                                                                                                                      0
                                                                                                                      Насчет МК-52 не уверен. Там больше не программирования было а решения головоломок куда бы чего запихнуть эдак чтобы в память вместилось.
                                                                                                                      Когда не было альтернативы, это было круто… но как только появились «Радио-86РК» и ему подобные калькулятор потерял свою привлекательность.
                                                                                                                        +1
                                                                                                                        Дык, в этом и прелесть. Написать алгоритм, чтобы впихнуть его в 105 байт памяти кода и 16 регистров — это надо научиться не просто писать алгоритмы, а еще и отлично оптимизировать. Самое что ни на есть программирование :). После этого К580ВМ80А с 48К памяти — это просто безграничные ресурсы.
                                                                                                                          0
                                                                                                                          Это не прелесть, а способ занять мозги. Оно конечно хорошо, но низкоуровневой оптимизацией прекрасно справляются компиляторы, просто на Z80 и 48К памяти горизонты возможностей несколько шире.
                                                                                                                          На современном железе 16Гб — это довольно узкие горизонты для современных задач, наверно на уровне тех же 105 ячеек(кстати ячеек а не байт, они ведь там 4-битные).
                                                                                                                            0
                                                                                                                            Умение видеть слабые места алгоритма и точки для оптимизации — это важнейшее качество программиста тех лет, и далеко не лишнее сейчас. У вас не было оптимизирующих компиляторов на МК-52, у вас их не было на Радио-86РК, не было на ZX-Spectrum, да и на IBM PC они появились ближе к закату жизни этой машинки, и были не особо умными. Сейчас да, они есть, но опять же таки, мы оперируем во многих случаях монстроидальными объектами монстроидальных библиотек, и зачастую приходится так же сражаться с их причудами и «фичами». А неумелым алгоримом легко уложить на лопатки любую современную машину, хотя насчет «узких горизонтов» 16Гб вы, конечно, преувеличили. Пока что их с лихвой хватает практически для любых задач персонального компьютера. Но это пока.
                                                                                                                            Ячейки памяти кода у МК-52 не четырехбитные, у него 65 команд плюс 10 цифр, итого 75 инструкций, каждая занимает одну ячейку. Минимум 7 бит надо. Это у него ППЗУ было с четырехбитной адресацией.
                                                                                                                              0
                                                                                                                              Ну, в масштабах Гугла, например, 16Гб — это ничто. Вспомним БАК, где количество записываемых экспериментальных данных измеряется эксабайтами… и их надо чем-то перемалывать. Вот по сравнению с ними 16Гб это те 105 ячеек.
                                                                                                                              В то время как рядовые люди используют калькуляторы всего с двумя регистрами.
                                                                                                                                +1
                                                                                                                                Просто и Гугл, и БАК, и все остальные BigData в масштабах мирового ИТ — это крохотная капля в море. В мире успешно трудятся миллиарды ЭВМ, и почти все они имеют ресурсы намного скромнее даже 16Гб.
                                                                                                                                +1
                                                                                                                                Умение видеть слабые места алгоритма и точки для оптимизации — это важнейшее качество программиста тех лет, и далеко не лишнее сейчас.

                                                                                                                                Сейчас — размер программы почти никогда не имеет значения, но имеет значение время её выполнения.
                                                                                                                                Оптимизация алгоритмов для скорости работы и для компактности кода — две совершенно разные задачи, опыт/навыки в одной из них неприменимы в другой.
                                                                                                                                  0
                                                                                                                                  Это у компилятора С++ оно как две совершенно разные задачи в опциях стоит :) У живого программиста скорость выполнения и компактность кода обычно сильно коррелируют. Компилятор вам не подскажет, какой XML-парсер использовать в своем проекте, и где надо бы обрабатывать десятимегабайтный пакет данных SAX-парсером, а не грузить его в DOM, например.
                                                                                                                                    +1
                                                                                                                                    У живого программиста скорость выполнения и компактность кода обычно сильно коррелируют.

                                                                                                                                    Мы сейчас сравниваем «как писать код» или «какую библиотеку подключить»?
                                                                                                                                    Потому что я сходу приведу кучу примеров, где — при написании кода без оптимизирующего компилятора, как на старинном железе — приходится выбирать между скоростью выполнения и компактностью кода. Разворачивание циклов, инлайнинг функций, выравнивание данных, использование битовых полей, выбор между хэш-таблицей и поиском в массиве, между арифметическим приближением математических функций и таблицей заранее рассчитанных значений…
                                                                                                                                      0
                                                                                                                                      > Мы сейчас сравниваем «как писать код» или «какую библиотеку подключить»?
                                                                                                                                      Второе — часть первого. Причем одна из существенных. Если вы не работаете с embedded либо с чем-то высоконагруженным (криптование, обработка сетевых пакетов, стриминг), вам не придётся думать на инлайнингом функций, выравниванием под машинное слово или разворачиванием циклов. Просто потому, что ваши старания никто не заметит, ни пользователь, ни компьютер. А вот пример с DOM vs SAX в прикладном программировании встречается часто. И знаете, если вышеупомянутые действия позволят вам сэкономить несколько миллисекунд процессорного времени, то в случае обработки XML от вашей оптимизации будет зависеть, будет ли приложение работать быстро, или уложит на лопатки весь компьютер, т.е. банально на обработке текста в 2016-м году.
                                                                                                                                        +1
                                                                                                                                        Давайте я вам поверю на слово, что навыки оптимизации кода для МК-52, Радио-86РК и ZX-Spectrum помогают вам выбрать, какую библиотеку подключить для парсинга XML.
                                                                                                                      0
                                                                                                                      да, и в добавок к «Большая часть программистов — самоучки»
                                                                                                                      тот кого учили программированию и он потом набирался опыта и тот кто все сам учил и набирался опыта две большие разницы. Возможно есть исключения, но из тех с кем мне приходилось иметь дело — первые писали грамотнее.
                                                                                                                      Хочется сказать новичкам, не бойтесь, и главное не останавливайтесь на пол дороги. Терпение и труд все перетрут, будет праздник и на Вашей улице.
                                                                                                                        –3
                                                                                                                        Программирование противно человеческой природе, то что хорошо в науке и технике — то плохо в программировании, и наоборот. Это мир зазеркалья в прямом смысле. Инженер ищет решение вопроса, а программист ищет малейшую лазейку для пользователя или тех.процесса, или компьютера отработать неправильно. Все люди враги. Человек добившийся чего то в науке и технике порой просто не хочет и не может перестроить свое сознание с позитива на негатив.

                                                                                                                        Да, терпение и труд — самое худшее для программиста, терпеливая работа уже на завтра оказывается в корзине для бумаг, лучше бы в тот день ваще не ходил на работу. Новичкам следует сказать — все придурки, один ты умный, так быстрее идет адаптация сознания.
                                                                                                                          0
                                                                                                                          какое то извращённое странное у Вас понятие о программировании. Как может быть противно то что доставляет удовольствие? Я инженер по профессии, технарь, всю жизнь занимаюсь программированием (с 1985 года). И не вижу большой разницы между инженером и программистом. Тех процесс схож, планирование разработка, тестирование. Все требует и математики и прочих специфичных знаний. Везде постоянно приходится учиться новому в твоей области и постоянно осваивать смежные области для которых что то разрабатываешь. Надо учиться работать в комманде. Если все делать правильно то в итоге все работает. Мы ведь не говорим о говнокодерах и снобах?
                                                                                                                          п.с. не будьте так критичны и максималистичны, смотрите на жизнь и профессию проще. Если она Вам не нравится, Вы просто не правильно её приготовили…
                                                                                                                            –2
                                                                                                                            Вот я беру десяток программистов, вычисляю количество человеко-часов за месяц и количество операторов кода. А потом беру все то же самое за пять лет. Опс, 90% кода в корзинке. Что мы делали все эти пять лет? Да, наши старинные версия стоят у клиента и крутятся, однако… Ага, математики… Да математики в софте тех. процесса от силы 2%, а все остальное if не то, if не это, погнали копировать массив… Ага, смежные области… Это вместо того, чтобы осваивать соответствующие библиотеки, так как абсолютно все написано до нас и упаковано в среду с документацией. Вместо того, чтобы писать не убиваемый класс лучше мы в команде обсудим как он не будет работать. Производительность одного программиста 100%. Двух — 150%, трех 175%, четырех 187%. Добавим сюда понижающий коэффициент тупого начальника — 0,8%. Во, получилась команда в пять человек с производительностью в полтора программиста. Оставьте двух, разделите задачу пополам — бинго. А если заболеет? На такой зарплате не заболеет.
                                                                                                                              0
                                                                                                                              Это вместо того, чтобы осваивать соответствующие библиотеки, так как абсолютно все написано до нас и упаковано в среду с документацией.

                                                                                                                              Не подскажете библиотеку для метода ранжирования, который я как раз сейчас пытаюсь разработать?
                                                                                                                                0
                                                                                                                                Вам не подскажу, но зато могу программистам, которые передали нам свой софт на сопровождение, подсказать наличие всяких разных контейнеров в стандартных библиотеках, и наличие библиотечных средств для работы с SMTP. И еще много-много других хороших библиотечных средств.
                                                                                                                                И вы знаете, по моим ощущениям, ваш случай частный, а мой — распространенный :)
                                                                                                                        +1
                                                                                                                        Лично мне в статье не хватило рассказа о том, что интересного в программировании. Т.е. что такого мы в этом деле находим, что готовы тратить на это занятие даже выходные :)
                                                                                                                          +2
                                                                                                                          Поразительный пример оптической иллюзии, коллеги! Статья вроде бы и неплохая, но плохая одновременно. Есть пара интересных и полезных для новичков мыслей в начале, но автор, видимо испугавшись возможного успеха, начал вдруг нести какую-то околесицу про C++ и остаток статьи стал похож на рассуждения «640 килобайт памяти хватит всем».
                                                                                                                            0
                                                                                                                            автор изложил свое видение, которое может показаться и околесицей
                                                                                                                            +3
                                                                                                                            «Как не стать программистом или… тебе здесь не место» Воистину нам не место в вышеописанном программировании, и новичкам такого не желаю. ;) Только про компиляцию в голове ок сказал.
                                                                                                                              +2
                                                                                                                              Откуда такое негодование к популярному Pascal?

                                                                                                                              Понятное дело, что раз его изучают новички, на этом ЯП по статистике всегда будет максимальное количество говнокода.
                                                                                                                              Но! Это не проблема самого Pascal. Вполне лаконичный ЯП.

                                                                                                                              Существует и активно-развиваемый Free Pascal.

                                                                                                                              И вы можете использовать любые компоненты от VCL и .NET до любых кросс-платформенных. Какие компоненты вы используете — не зависит от ЯП.

                                                                                                                              Есть еще свободное подобие Delphi — Lazarus.

                                                                                                                              PS Я на Pascal давно ничего не программирую. Но я никогда не отговаривал новичков от этого славного ЯП.

                                                                                                                              Вы поймите, если все будут изучать программирование с таких ЯП как C++, JavaScript, Python, Java, сразу же весь говнокод из Паскаля и Delphi перетечёт в говнокод C++, JavaScript, Python, Java. — Кто от этого выиграет непонятно: работник или работодатель?
                                                                                                                                +1
                                                                                                                                Простите, не удержался, но FreePascal полон багов чуть более чем полностью, поставляется вместе с убогой IDE.
                                                                                                                                Насчет компонентов — да, можно использовать что угодно — но скорее в теории, чем на практике, Delphi, как и Лазарус вынуждают использовать поставляемые с IDE компоненты. Это отучает от программирования как такового и приучает к рутиному использованию определенного набора компонентов, которые больше нигде и не используются (та же VCL).

                                                                                                                                Но! Это не проблема самого Pascal. Вполне лаконичный ЯП.


                                                                                                                                Чистый паскаль как раз совсем не лаконичен:

                                                                                                                                PROCEDURE Example (VAR ARG1, ARG2: INTEGER)
                                                                                                                                VAR
                                                                                                                                 One, Two : INTEGER;
                                                                                                                                BEGIN
                                                                                                                                  {Код}
                                                                                                                                END;
                                                                                                                                
                                                                                                                                ;

                                                                                                                                Что мы тут видим? Блок описания для переменных, блок констант, громоздкий синтаксис.

                                                                                                                                Аналог этой же процедуры на C++:

                                                                                                                                void Example(int arg1, int arg2){
                                                                                                                                    int one, two;
                                                                                                                                    //Код
                                                                                                                                }
                                                                                                                                


                                                                                                                                Я думаю разница очевидна — и это безо всяких примеров с синтаксическим сахором C++ 11.

                                                                                                                                  0
                                                                                                                                  Во времена пиратского Delphi 7, помню целые dvd-диски с компонентами к нему. Никто не заставлял использовать VCL. Причем, было все равно, на чем был написан распространяемый уже откомпилированным модуль/компонент. Если это .obj, то для использования хватит и заголовочника .h. А если .dll, структура модуля хранится уже в самом .dll.

                                                                                                                                  Я начинал изучать программирование с C. С появлением на моем компьютере Windows 95, стал изучать CBuilder3. — Вот это была жесть! Позже, года через 3, в институте освоил Delphi. Так до сих пор жалею, что не пересел на него раньше. Ну, а после института купил iBook G4, и на этом моя работа с продуктами Borland завершилась.

                                                                                                                                  Pascal — отличный для обучения язык. Должны же существовать языки с низким порогом вхождения. Сейчас и так тяжело найти нормального программиста на C++. Если всех новичков обучать с C++, — это, грубо говоря, понижает среднестатистический IQ общества программистов C++. И вы думаете, будет принципиально больше специалистов? Думаете, станет легче найти сеньоров С++? Как по мне, так станет еще сложнее.
                                                                                                                                    –1
                                                                                                                                    согласен с Вами абсолютно. С++ не для всех. Кому стоит остаться и на ПАскале, что я и наблюдаю.
                                                                                                                                    Я уже писал что С++-программиста в полумиллионном городе мы ищем 1-2 года. Паскалистов море. Но они не хотят переобучаться и это их дело.
                                                                                                                                      0
                                                                                                                                      Их может и много, но они не знают и не умеют ничего. И это дело не в ЯП. Паскаль \ Делфи был проще и они освоили хоть что-то. А плюсы не освоили бы с таким подходом даже базово.
                                                                                                                                    0
                                                                                                                                    Разницы нет НИКАКОЙ.
                                                                                                                                    Или вы громоздкость измеряете в количестве символов которые надо набрать? Так это не та проблема на которую надо обращать внимание. Вот когда вы начнёте генерить исходники безостановочно со скоростью машинистки 240 знаков в секунду тогда это может оказаться критичным, но тут уже мозг не будет успевать генерировать такой поток чистого сознания.
                                                                                                                                  +9
                                                                                                                                  Программирование — это не профессия, это диагноз.

                                                                                                                                  Нет, все же, это вредная статья, потому что способствует дезинформировании молодежи и разжиганию ЧСВ.

                                                                                                                                  Программирование — это всего лишь работа. Порой творческая, порой не очень.

                                                                                                                                  Программирование — намного проще, чем теоретическая физика.

                                                                                                                                  Проще, чем теория алгебраических многообразий.

                                                                                                                                  Проще, чем дискретная математика (если не верите — откройте «Теорию моделей» Робертсона).

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

                                                                                                                                  В программировании очень много рутины.

                                                                                                                                  Это сидячая работа, чреватая ожирением, остеохондрозом и проблемами со зрением.

                                                                                                                                  Но программистам хорошо платят.
                                                                                                                                    0
                                                                                                                                    Кстати, шутка «Программирование — это не профессия, это диагноз.» это не мое. Это древний программисткий юмор.
                                                                                                                                    Я отчасти согласен что программировать просто. Но для этого должен быть определенный склад ума.
                                                                                                                                    Было бы это легко, сейчас не было бы недостатка в нормальных программистах. Это страшный дефицит в регионах.
                                                                                                                                    А так, бродят дипломированные программисты. А написать ничего не могут. Диплом есть, а программировать не умеют.
                                                                                                                                      0
                                                                                                                                      Как говорится — легко выучить, сложно использовать и тем более использовать хорошо и правильно.
                                                                                                                                        +1
                                                                                                                                        Я не говорил, что программировать просто. Я говорил, что есть в принципе более сложные занятия.
                                                                                                                                        Сложность «программирования» сильно зависит от сложности решаемых программой прикладных задач.

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

                                                                                                                                        И с футболом в России дела обстоят еще хуже, чем с программированием.
                                                                                                                                      +12
                                                                                                                                      А знаете, что самое грустное? Автор говорит, что у него опыта программирования 20 лет.
                                                                                                                                        –1
                                                                                                                                        Мое сумбурное изложение моего видения обучения программирования никак не связаны с опытом работы.
                                                                                                                                        Я 20 лет пишу коммерческое ПО, которое к тому же поставляется и на зарубежные рынки. Есть даже версия на китайском.
                                                                                                                                        ПО работает стабильно.
                                                                                                                                        Я сам не претендую на звание какого особого крутого программиста. Оцениваю средне свои способности.
                                                                                                                                        Меня пугает другое. Крайне тяжело стало находить программистов. Их катастрофически мало с каждым годом. В нашем полумиллионном городе их просто единицы. Иногда уходит год-два чтобы найти приличного разработчика ПО для нового проекта.
                                                                                                                                        Да, толпами ходят веб-разработчики (которые в разработку десктопного софта идти не хотят), много скучающих паскалистов (но у нас в конторе дефактовый стандарт С++). Я уже молчу про то, чтобы найти разраба под микроконтроллер.
                                                                                                                                        Очень многие просто боятся соваться в эту отрасль. Тут надо много думать!
                                                                                                                                          +3
                                                                                                                                          Очень многие просто боятся соваться в эту отрасль
                                                                                                                                          Потому как это очень узкая отрасль и, в случае увольнения, или желания сменить работу, будет сильно сложнее найти себе применение. Эмбеддед, всё же, накладывает свои отпечатки.
                                                                                                                                            +2
                                                                                                                                            Подскажите пожалуйста, как вы определяете, хороший разработчик или нет?
                                                                                                                                              +1
                                                                                                                                              Вы к с своему опыту в комментариях апеллировали. Но речь не о том, какой вы программист. А в том, как вы оцениваете людей и технологии. В статье вы с легкой руки гнобите и опускаете одни области и языки и превозносите другие. Хотя вроде как с годами должно выработаться понимание, что каждому инструменту есть своё применение. И что если человек занимается не не тем же чем и вы — это не значит, что он занимается чем-то отстойным. У вас же вся статья этим пропитана.

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

                                                                                                                                                Но проблема в том, что от эмбеддед-разработчика требуется опыт в эмбеддед-разработке. А как его получить? Замкнутый круг.
                                                                                                                                                </