Andy Melnikov (nponeccop) wrote,
Andy Melnikov
nponeccop

Category:

Практичность HN0 (бизнес-план)

Тратить 15 лет на создание такой чудовищно непрактичной хуйни, как Haskell, Clean, ML или Epigram у меня нет желания. Поэтому я пошел другим путем. Сначала докажу, что можно построить практичную (переплёвывающую С++ в области высокопроизводительных и системных приложений) систему на основе современных технологий, а затем привлеку людей и финансирование, чтобы догнать тот же GHC скажем, за год. Итак...

HN+inf - будущий архипрактичный язык, использующий языки ...HN+2, HN+1, HN0 в качестве бэкенда. Область применения - сегодняшняя область применения С++. Это:
  1. встраиваемые системы (плееры, мобильные телефоны),
  2. системы реального времени (управление технологическими процессами, работа с датчиками-сервоприводами)
  3. игры
  4. системное ПО (операционные системы, серверы баз данных, серверы приложений, веб-серверы, виртуальные машины других языков, компиляторы)
  5. небольшие утилиты (традиционно распространяемые как shareware и пишущиеся на С++, в духе winzip, Mozilla или winMd5Sum)
  6. мультимедиа (кодеки, все продукты Adobe, фотореалистичный 3D-рендеринг)
  7. научные вычисления (HPC)
Каким требованиям должен удовлетворять новый язык для того, чтобы кто-то согласился отдать деньги или время на разработку? Язык должен быть перспективным, high-tech, чтобы можно было посулить поднятие эффективности в разы и поднять маркетинговый hype. Должна быть возможность делать на этом деньги (крупным инвесторам может хватить и возможности делать репутацию!). Никто не согласится платить деньги за те же яйца, только в профиль.
  1. Язык действительно должен обеспечивать более высокую продуктивность программиста по сравнению с С++.
  2. Язык не должен уступать существующим решениям по производительности приложений (базок данных и других нетребовательных корпоративных приложений, традиционно пишущихся на С#/Java нет в списке областей применения, не говоря уже о Perl/Ruby/Python/PHP!)
  3. Приложения должны иметь небольшой footprint (требуется в областях 1, 5)
  4. Должна быть поддержка (инструменты, документация, семинары, учебники, on-site consulting, развитое тематическое сообщество - you name it)
  5. Должна быть бесшовная интеграция со старым кодом (читайте: написанным на С++)
3 требованию удовлетворяют только С++ и Fortran (последний - из-за того что был разработан исключительно для 7 области, где используется в слегка подсахаренном виде и поныне). 3 требование в сочетании с 4 - только С++. Всем остальным требованиям удовлетворяет любой мейнстримовый язык, но скажем Haskell запросто переплевывает мейнстрим по первому пункту.

Итого, рецепт такой:
  • Берем идеи продвинутых немейнстримовых языков
  • Доводим производительность и footprint до уровня С++
  • Обеспечиваем link compatibility с С++ для всех компиляторов и платформ (включая дешевый двухсторонний маршаллинг вызовов!)
  • Обеспечиваем поддержку
  • Обеспечиваем маркетинг
При неограниченном бюджете в этом рецепте провалиться может только второй и последний пункты. Соответственно, я взялся за первые два пункта (которые бессмысленны один без другого) и пытаюсь создать proof-of-concept систему без повторной реализации того, что и так уже сделано в Haskell или Epigram. Итого, HN0 пытается ответить на такой вопрос:
  • Можно ли обеспечить в высокоуровневом чисто функциональном языке производительность низкоуровневого императивного С++?
Отсюда и его неудобство для конечного пользователя - я откладываю реализацию тех фич, которые никак не повлияют на производительность. Для начала я реализую "голый" лямбда-калкулус максимально эффективно (у меня есть идеи). Если эффективности не хватит, то буду последовательно реализовывать линейные типы и типы с  зависимостями, так как более строгая типизация предоставит более сильные инварианты оптимизатору. Структуры, которые можно эффективно представить синтаксическим сахаром, и которые не повлияют на эффективность - мне на данном этапе не интересны, не хочется делать лишнюю работу если потом окажется что все мои идеи - хуйня...

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

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 12 comments