Vladimir Shabanov (vshabanov) wrote,
Vladimir Shabanov
vshabanov

Category:

Бизнес-стратегии в языках программирования или что общего у Haskell и Apple

В последнее время я стал достаточно плотно интересоваться маркетингом и бизнесом вообще и как-то дошел до такого понятия как бизнес-стратегия.

По большому счету, успешных бизнес-стратегий всего три:

  1. лидерство по издержкам (минимальная себестоимость и цены)

  2. дифференциация товаров ("think different", "не такой как все", т.е. отличие по качеству, уровню обслуживания, технологическому превосходству или высокой ценности для покупателей)

  3. фокус — обслуживание узких рыночных ниш.


Другие стратегии, или различные комбинации перечисленных, не работают. Т.е. нет смысла делать супер-продукт или нишевый продукт задешево, или делать нишевый продукт супер-крутым. Если, конечно, у вас нет магических артефактов типа "+$10M от инвестора" или "+24 часа в сутках". Более подробно можно посмотреть например здесь.

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

Поехали.

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

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

C# и Java также лидеры по издержкам. Учитывая количество программистов, библиотек, инструментов, "мейнстримность", многим кажется (и зачастую так оно и есть), что использование этих языков наиболее дешево (хотя не забываем, про "скупой платит дважды").

C был в свое время лидером по издержкам (дешевле, чем писать на ассемблере или писать кучу привязок к ОС), но с появлением "продуктов-заменителей" потихоньку становится нишевым языком (embedded, OS, runtime). Поскольку в некоторых нишах ничего, кроме Си нет, он явно будет в них успешным.

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

OCaml — помесь всех трех стратегий. Относительно дешевый вход (есть императивное программирование, точки с запятой, while/for, объекты, когда-то была сравнительно неплохая скорость работы), при этом different и, заодно, нишевый (все-таки создавался для разработки Coq). В итоге язык так и не стал успешным. Недостаточно дешевый и недостаточно different.

Haskell. Явно стратегия "think different". И явный успех. Самый популярный функциональный язык (как бы его создателям не хотелось обратного). Посмотрите объем mail list-а, hackage, число статей. Кому-то может показаться, что Erlang более популярен, но это вызвано его нишей, где проекты обычно достаточно масштабные и громкие, однако само число и объем этих проектов вряд ли дотянет даже до части hackage.

Хаскелл дорогой, как и многие "think different"-продукты. А известная фраза "avoid success at all costs" не дает сделать его дешевым (ведь смешивание стратегий приводит к провалу).

И самое интересное — продукты с данной стратегией не оставляют никого равнодушными. Их либо любят, либо ненавидят :)

Я долгое время не мог понять причину некоторых агрессивных атак на Хаскелл. Ну не понял человек хаскелл за полчаса — а зачем так кричать в жж-шечке? Не увидел каких-то явных для себя преимуществ — не используй, чего разглагольствовать? А, оказывается, это всего-лишь стандартная реакция на "think different". Теперь можно не удивляться )

Т.е. Haskell — это Apple среди языков программирования. Отсутствие изменяемого состояния — отсутствие USB на iPad. Побочные эффекты через монады — музыка через iTunes.

Сначала люди удивлялись/недоумевали/злились, что на iPad нет USB. А сейчас я ума не приложу, для чего он там может понадобиться. Думаю, то же самое произойдет в программировании с использованием переменных везде, где ни попадя.

Люди также злились, что какой-то геморрой с закачиванием mp3-шек. А теперь многие из покупающих музыку в iTunes возможно и не знают, что такое mp3. Думаю, будет неплохо, если в будущем программисты будут изначально знать, что за побочные эффекты надо платить (к тому же с iTunes, тьфу, монадами это так удобно ;).

Интересная получилась аналогия.

А что касается F#, Scala, Clojure и прочих "новых языков поверх существующей платформы". Я, кажется, понял, что мне в них не нравится: они пытаются одновременно быть и different и дешевыми (с легким входом). Они, конечно, привлекут к себе часть клиентов, но вряд ли смогут сделать такой же красивый дизайн как у Haskell, оставаясь при этом дешевыми (с легкой интеграцией с существующей платформой).

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

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 16 comments