Программисты и музыканты
Dec. 25th, 2016 07:04 pmАналогия для useless-faq - чисто по приколу:
Программисты на Си - это как скрипачи: могут сыграть любую ноту, вопрос в том, сколько для этого придется тренироваться и сколько понадобится скрипачей, чтобы сыграть аккорд из дюжины нот. Язык Си - самый универсальный из существующих, является основой операционных систем, но ему не хватает стандартных "примочек" для типовых задач, таких как свистелки-перделки-кнопочки-таблички (в смысле - звук и графика). Все это на Си можно сделать и в конечном счете получится лучше, чем у других, но вопрос, сколько это потребует человеко-часов.
Программисты на Си++ - это как скрипачи на электронной скрипке: в основе та же скрипка, но с усилителем звука, электронной обработкой, набором плагинов... Си++ - развитие языка Си с попыткой где-то упростить себе жизнь, а где-то - добавить те самые недостающие примочки. Соответственно программисты Си++ смотрят на чистых Си-шников как на ретроградов, а чистые Си-шники на Си++ - ников - примерно как гитарист на электро-гитариста, а скрипач - на электро-скрипача.
Программисты на ассемблере - это движение, скорее, в противоположную сторону - программирование на машинных командах конкретного процессора. Теоретически позволяет сделать всё ещё круче, но это из разряда "левша с напильником может сделать ровнее, чем токарный станок". Поэтому в ассемблер упарываются только от безвыходности - когда устройство не может даже в Си или когда надо сделать маленький кусочек программы ну оооочень быстрым (пример из моей жизни - оптимизация скорости алгоритма шифрования). Ну и на программиста на ассемблере смотрят как на музыканта, который вынужден за неимением скрипки изображать скрипку, водя напильником по консервной банке.
Программисты на Java - это как пианисты. И сидят удобно, и потеют меньше, и могут сыграть аккорд из десятка нот, но... звуки МЕЖДУ клавишами извлечь не смогут, сделать звук "дрожащим" - не смогут, сделать ноту с нарастающей громкостью - не смогут. А главное - не смогут утащить с собой свой рояль в футлярчике. Язык Java во многом проще, и у него есть полезные стандартные примочки в количестве, но иногда тормозит, жрёт память как не в себя и может не всё. Отсюда отношения между Си-шниками и Java-истами: первые считают вторых халявщиками, а вторые первых - мазохистами.
Кстати, продвинутые программисты на Java умеют при необходимости подключать кусочки программ на Си. Это примерно так же удобно, как посадить скрипача внутрь рояля, чтобы он играл, когда понадобится извлечь ноту "между" клавишами.
Программист на функциональных языках - это как наркоман, пытающийся имитировать ртом звуки разных инструментов. Сам наркоман имеет мнение, что он может изобразить всё, и очень этим гордится. Окружающие имеют на этот счет мнения противоречивые, а главное - большинство не понимает, как у него вообще что-то получается??
Программисты на Си - это как скрипачи: могут сыграть любую ноту, вопрос в том, сколько для этого придется тренироваться и сколько понадобится скрипачей, чтобы сыграть аккорд из дюжины нот. Язык Си - самый универсальный из существующих, является основой операционных систем, но ему не хватает стандартных "примочек" для типовых задач, таких как свистелки-перделки-кнопочки-таблички (в смысле - звук и графика). Все это на Си можно сделать и в конечном счете получится лучше, чем у других, но вопрос, сколько это потребует человеко-часов.
Программисты на Си++ - это как скрипачи на электронной скрипке: в основе та же скрипка, но с усилителем звука, электронной обработкой, набором плагинов... Си++ - развитие языка Си с попыткой где-то упростить себе жизнь, а где-то - добавить те самые недостающие примочки. Соответственно программисты Си++ смотрят на чистых Си-шников как на ретроградов, а чистые Си-шники на Си++ - ников - примерно как гитарист на электро-гитариста, а скрипач - на электро-скрипача.
Программисты на ассемблере - это движение, скорее, в противоположную сторону - программирование на машинных командах конкретного процессора. Теоретически позволяет сделать всё ещё круче, но это из разряда "левша с напильником может сделать ровнее, чем токарный станок". Поэтому в ассемблер упарываются только от безвыходности - когда устройство не может даже в Си или когда надо сделать маленький кусочек программы ну оооочень быстрым (пример из моей жизни - оптимизация скорости алгоритма шифрования). Ну и на программиста на ассемблере смотрят как на музыканта, который вынужден за неимением скрипки изображать скрипку, водя напильником по консервной банке.
Программисты на Java - это как пианисты. И сидят удобно, и потеют меньше, и могут сыграть аккорд из десятка нот, но... звуки МЕЖДУ клавишами извлечь не смогут, сделать звук "дрожащим" - не смогут, сделать ноту с нарастающей громкостью - не смогут. А главное - не смогут утащить с собой свой рояль в футлярчике. Язык Java во многом проще, и у него есть полезные стандартные примочки в количестве, но иногда тормозит, жрёт память как не в себя и может не всё. Отсюда отношения между Си-шниками и Java-истами: первые считают вторых халявщиками, а вторые первых - мазохистами.
Кстати, продвинутые программисты на Java умеют при необходимости подключать кусочки программ на Си. Это примерно так же удобно, как посадить скрипача внутрь рояля, чтобы он играл, когда понадобится извлечь ноту "между" клавишами.
Программист на функциональных языках - это как наркоман, пытающийся имитировать ртом звуки разных инструментов. Сам наркоман имеет мнение, что он может изобразить всё, и очень этим гордится. Окружающие имеют на этот счет мнения противоречивые, а главное - большинство не понимает, как у него вообще что-то получается??