LINUX.ORG.RU

Enterprise vs. non-enterprise

 , nfr


0

5

Всем привет. Как поживаешь, /development/ ЛОРа? Давно не писал, но мое внимание привлекла одна проблема (присущая, вообще говоря, не только ЛОРу, но на ЛОРе проявляющаяся ярче всего). Речь пойдет о пресловутом «enterprise» (иногда в юмористическом написании «enterpriZe», «ынтырпрайз» и так далее).

В том, что «enterprise» стал на ЛОРе эдаким жупелом, смоляным чучелом — ничего странного и страшного нет. У неспециалистов это слово в первую очередь ассоциируется с корпоративным, капиталистическим, пиджачно-галстучно-кофеварочным. А отрицание корпоративного — очень в духе современной молодежи, чей природный нонконформизм требует реализации. Но это не есть предмет сегодняшней беседы; оставим юношеский нонконформизм социологам и психологам.

Проблема в том, что сам технический термин «enterprise-технологии» часто трактуется неверно. Распространено множество дилетантских интерпретаций (например, «ынтерпрайз ≡ copy-paste» и так далее). Как человеку, не один десяток лет проведшему в пресловутом «enteprise», мне хотелось бы расставить точки над «i».

Итак, ПО и технологии уровня предприятия («enterprise software») характеризуются в первую очередь повышенными нефункциональными требованиями (non-functional requirements, NFR). Что это означает? NFR относятся к работе системы, а не к её специфическому поведению (которое описывается функциональными требованиями). Рассмотрим типичные NFR:

  • производительность (performance);
  • масштабируемость (scalability);
  • доступность (availability);
  • надежность (reliability);
  • безопасность (security);
  • расширяемость (extensibility);
  • управляемость кода (maintainability);
  • управляемость системы (manageability)

и так далее. По этим признакам определенные технологии и языки программирования могут быть отнесены к «enterprise» или «non-enterprise». Например:

  • Java-технологии специально разрабатывались как enterprise и максимально удовлетворяют перечисленным NFR;
  • у языка Си отличная производительность, но отсутствует ООП, отсюда проблемы с абстракциями, управляемостью и расширяемостью. Плюс прямая работа с памятью и проблемы безопасности;
  • C++ предоставляет ООП, но не решает проблем с безопасностью;
  • Python и Ruby обладают хорошим ООП, но, не имея качественных JIT-компиляторов, сильно проигрывают по производительности. См. историю с Твиттером и Ruby vs. Scala;
  • Haskell имеет немасштабирующийся GC; функциональный подход не дает таких возможностей для decoupling'а и модуляризации, как ООП. Следствие — неуправляемый и плохо расширяемый код;
  • Лиспы имеют целый букет проблем, начиная от производительности, проходя через масштабируемость и заканчивая управляемостью.

Разумеется, такое деление «enterprise / non-enterprise» в известной степени условно. Например, можно и на Java нагородить неуправляемой, немасштабируемой и дырявой лапши. С другой стороны, наверное, можно и в рамках лиспа придерживаться строгой модуляризации, а коммерческие реализации дадут хорошую производительность и масштабируемость. Однако, такой подход не принят в лисп-среде (там приняты шестиуровневые квазицитирования), и подобный код будет считаться «non-lispy crap».

Более подробно эту тему я собираюсь осветить в своем блоге. А засим желаю всем быть точными в терминах, а технологии выбирать по их объективным достоинствам/недостаткам, а не руководствуясь нонконформизмом или модными трендами.

С пламенным приветом,
ваш Кукинштейн

★★

Ответ на: комментарий от mv

Он на кафедре учился?? ;)

Я что-то не то сморозил? Факультет -> Кафедра. У нас такое деление было.

alienclaster ★★★
()
Ответ на: комментарий от archimag

Какие могут быть пруфы на форуме, сам то подумай. Ссылки? Любой уважающий себя анонимус на ссылку скажет «ну и что». Считай что ты просрал свое время

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 1)
Ответ на: комментарий от vertexua

Ты не поверишь, но большинство стартапов - говносайты.

Ну-ну, иди на Хабр метанируй.

anonymous
()
Ответ на: комментарий от vertexua

Без юнит-тестов, которые проверяют типы

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

alienclaster ★★★
()
Ответ на: комментарий от alienclaster

4-й пункт не распарсил

За плохие имена переменных и функций бьют в любом коллективе, не зависимо от используемого языка.

mv ★★★★★
()
Ответ на: комментарий от alienclaster

Чего?

Считай что в статическом ЯП эти тесты типов написаны за тебя

тесты типов

тесты типов

тесты типов

тесты типов

тесты типов

тесты типов

тесты типов

тесты типов

vertexua ★★★★★
()
Ответ на: комментарий от mv

За плохие имена переменных и функций бьют в любом коллективе, не зависимо от используемого языка.

А чем плохо название name для поля структуры?

alienclaster ★★★
()
Ответ на: комментарий от vertexua

И тут в тред врывается модульное тестирование

Считай что в статическом ЯП эти тесты типов написаны за тебя.

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

alienclaster ★★★
()
Ответ на: комментарий от anonymous

Петросянишь? Как насчёт пруфов-то?

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

Отрицать, что поезд CL ушёл - глупо, но в момент его расцвета лисповые станции были как пришельцы из будущего.

А сейчас фичи, присутствовавшие в CL (и его предках) расползлись по куче языков, т.е. уровень индустрии поднялся, что не может не радовать. И как правильно в треде отмечают, популярность новомодного лиспа - Clojure - растёт.

mv ★★★★★
()
Ответ на: комментарий от alienclaster

Я думаю я не мало раз написал «тесты типов». И юнит-тесты никто не отменял. Но они точно не тестируют что в структуре есть name

vertexua ★★★★★
()
Ответ на: комментарий от mv

Отрицать, что поезд CL ушёл - глупо, но в момент его расцвета лисповые станции были как пришельцы из будущего.

А сейчас фичи, присутствовавшие в CL (и его предках) расползлись по куче языков, т.е. уровень индустрии поднялся, что не может не радовать.

Это правда, лиспе действительно повлиял на IT в целом

vertexua ★★★★★
()
Ответ на: комментарий от vertexua

Я думаю я не мало раз написал «тесты типов».

Не имеет никакого отношения к дискуссии. Еще раз - модульное тестирование используется и в статике и в динамике? Да? Тогда какой смысл в ответе на «модульное тестирование» приводить свою статику?

И юнит-тесты никто не отменял. Но они точно не тестируют что в структуре есть name

А надо? Да? Зачем?

alienclaster ★★★
()
Ответ на: комментарий от alienclaster

Тогда какой смысл в ответе на «модульное тестирование» приводить свою статику?

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

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 1)
Ответ на: комментарий от mv

Отрицать, что поезд CL ушёл - глупо

Что ты имеешь ввиду? Все развивается достаточно системно и мега-эволюционно: логично, практично, эффективно. И java на своем месте и все остальное тоже. И у CL никакие поезда не уезжали.

А сейчас фичи, присутствовавшие в CL (и его предках) расползлись по куче языков

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

alienclaster ★★★
()
Последнее исправление: alienclaster (всего исправлений: 1)
Ответ на: комментарий от vertexua

Но они точно не тестируют что в структуре есть name

А надо? Да? Зачем?

При том что так делают очень часто в этих ВАШИХ JavaScript, Python (== Lisp)

Попробуй общаться связно, да? Кафедра какая, для статистики?

alienclaster ★★★
()
Ответ на: комментарий от alienclaster

СКС, будешь обсирать с дружками за пивом, не пуская их на форум чтобы посмотрели кто из нас ближе к истине?

Сам откуда, то?

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 3)
Ответ на: комментарий от vertexua

Тогда какой смысл в ответе на «модульное тестирование» приводить свою статику?

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

Ломающие новости - ява подталкивает людей ко лжи

Прицепляется ко мне какой-то парень на форуме
Прицепляется
до того что

Вот тебе и статика, без нее уже и грамотно писать не можешь, одни эмоции.

хотя я считаю что они нужны.

Ok, юнит-тесты нужны, статика ненужна. Давай еще о полях структур что-нибудь задвинь - полпива в запасе, щас выйду за попкорном.

alienclaster ★★★
()
Последнее исправление: alienclaster (всего исправлений: 1)
Ответ на: комментарий от alienclaster

Что ты имеешь ввиду? Все развивается достаточно системно и мега-эволюционно: логично, практично, эффективно.

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

В пересмотре стандарта никто особо не заинтересован

В этом-то его смерть и погибель. Если коробку с CL сверху засыпать модными сейчас батарейками, то популярность выстрелила бы моментально. Неплохо так же иметь хоть одну по-настоящему популярную реализацию языка. SBCL - хороший, но внутри хрен просто так разберёшься.

то есть CL - это не коммунити-проект (типа хаскеля, питона, схемы) и не проект одного автора (руби, плюсы, перл).

C++ - ANSI.

mv ★★★★★
()
Ответ на: комментарий от vertexua

Можно было не править 3 раза. На ВТ учился в свое время.

alienclaster ★★★
()
Ответ на: комментарий от alienclaster

У clojure есть родовые травмы и х..вая генетика.

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

mv ★★★★★
()
Ответ на: комментарий от vertexua

Считай что в статическом ЯП эти тесты типов написаны за тебя. Или ты их сам написал в виде типов - как хочешь воспринимай

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

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

Но поскольку пока всё ещё один тракторист с трактором «дороже» деревни жнецов с косами - «энтерпрайзом» востребованы будут «крестьяне» а-ля плюсовики/джависты.

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

yyk ★★★★★
()
Ответ на: комментарий от anonymous

Лол, а ты из тех клоунов, которые думают, что стартап - это говносайт? Тебе сколько лет? 14?

Айлоло, академик детектед. Что не так-то? Чувак всё правильно написал.

Стартап — это в первую очередь идея, а во вторую — реализация. 99% стартапов — это быстрый и грязный прототип, созданный на том, на чём можно писать быстро и грязно. Руби, Питон. Никакими NFR в этот момент никто не заморачивается. Главная задача — продать стартап, а там хоть трава не расти. В результате незадачливому покупателю приходится быдлокод переписывать, чтобы сервис не падал на реальных нагрузках.

Кстати, хороший пример — ViaWeb. Была интересная идея, которую Грэм и Ко. быстро набросали на лишпе. Посе приобретения Yahoo изучил, заткнув нос, эту кучку кода под лупой. Ужаснулся и принял единственное верное решение: переписать на нормальном языке. Вот и всё.

anonymous
()
Ответ на: комментарий от anonymous

Кстати, хороший пример — ViaWeb. Была интересная идея, которую Грэм и Ко. быстро набросали на лишпе. Посе приобретения Yahoo изучил, заткнув нос, эту кучку кода под лупой. Ужаснулся и принял единственное верное решение: переписать на нормальном языке. Вот и всё.

Нет не всё. Ты забыл добавить, что Yahoo после этого, судя по всему, настал п-ц.

mv ★★★★★
()
Ответ на: комментарий от mv

фичи, присутствовавшие в CL (и его предках) расползлись по куче языков, т.е. уровень индустрии поднялся

Средневековые алхимики и знахари интуитивно, по наитию приходили к результатам, которые потом были приняты (и проверены!) химией, медициной и биологией. Но при этом алхимия не перестает быть «тупиковой ветвью» в истории познания природы человеком.

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

anonymous
()
Ответ на: комментарий от mv

Имею в виду то, что по ряду причин CL в наши дни - не самый популярный язык

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

Скоро, кстати, лет 10-15 еще наверное и «усе» - о языках будет мало разговора, начнут надобиться всякие матанщики с социологами и прочими чучоными.

Если коробку с CL сверху засыпать модными сейчас батарейками

А это случится неизбежно. Или с ним или со схемой (рэкетом). И у лиспа будет свой «pythonic»-way и не один.

SBCL - хороший, но внутри хрен просто так разберёшься.

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

C++ - ANSI.

Да. Этим CL больше похож на эрланг и джаву.

alienclaster ★★★
()
Ответ на: комментарий от alienclaster

Все развивается достаточно системно и мега-эволюционно: логично, практично, эффективно. И java на своем месте и все остальное тоже. И у CL никакие поезда не уезжали.

HA HA HA, OH WOW

anonymous
()
Ответ на: комментарий от anonymous

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

Перечисли несколько, чтобы обсудить их объективность.

mv ★★★★★
()
Ответ на: комментарий от anonymous

99% стартапов — это быстрый и грязный прототип, созданный на том, на чём можно писать быстро и грязно. Руби, Питон, Лисп

fixed. С остальным согласен.

alienclaster ★★★
()
Ответ на: комментарий от mv

Нет не всё. Ты забыл добавить, что Yahoo после этого, судя по всему, настал п-ц.

Ололо! Yahoo переписал ViaWeb на Си, и после этого к нему приехал гроб на колёсиках ему настал п-ц! Не переписывайте, дети, лисповый код на говноязыки!!!!111

anonymous
()
Ответ на: комментарий от anonymous

многочисленные технические изъяны, которые сделали лисп нежизнеспособным

список этих изъянов в студию, пожалуйста

anonymous
()
Ответ на: комментарий от mv

C++ - ANSI.

Это не имеет значения, C++ это стандартизированный эволюционный гибрид «Си с классами». Си с классами - авторский проект трупа страуса.

alienclaster ★★★
()
Ответ на: комментарий от vertexua

Ищщо один, у кого стартап=уеб.

Недавно был успешный стартап, начинавший с Фортрана и ассемблера (pic).

anonymous
()
Ответ на: комментарий от anonymous

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

alienclaster ★★★
()
Ответ на: комментарий от anonymous

Ты еще говно Cadence вспомни. Все, чего коснулся лишп, воняет говном.

anonymous
()
Ответ на: комментарий от alienclaster

Lisp, Python... Google маленькая компания, да. И код у них маленький. И х..й.

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

yyk ★★★★★
()
Ответ на: комментарий от anonymous

В основном - это где? У пионеров и сосунков?

Вебня - это (в первую очередь) *социальные* проекты, и в таком разрезе будет рулить и педалить еще очень долго (всегда).

Венчур уебом не интересуется уже давно.

И чем же он интересуется? На какую наживку идет? :)

alienclaster ★★★
()
Ответ на: комментарий от mv

Так я же не спорю - у него победил другой набор критериев, чему я искренне рад. Хоть кто-то не стал ориентироваться на толпу.

yyk ★★★★★
()
Ответ на: комментарий от alienclaster

Это скорее указатель направления движения (для весьма специфических условий), массовое следование которому ещё только предстоит (в лучшем случае).

yyk ★★★★★
()
Ответ на: комментарий от yyk

Так я же не спорю - у него победил другой набор критериев, чему
я искренне рад. Хоть кто-то не стал ориентироваться на толпу.

Толпа тут не при чём, а ваш набор критериев левый.

Вообще ITA хороший пример потому, что там совсем не фанатики. Они также используют Java (для веб), C++ (для скорости) и Python в качестве клея.

archimag ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.