The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Выпуск встраиваемой СУБД Sophia 2.2

17.08.2016 09:08

Состоялся релиз встраиваемой СУБД Sophia 2.2, оформленной в виде разделяемой библиотеки. СУБД рассчитана на обеспечение очень большой скорости записи и чтения при работе с данными небольшого и среднего размера. Данные сохраняются на диске с использованием лог-подобного хранилища, работающего в режиме постоянного пополнения (append-only). В отличие от других лог-подобных хранилищ, метод хранения в Sophia не ограничивается высокой скоростью записи, но также оптимизирован для обеспечения высокой скорости произвольного чтения данных и выборки диапазонов значений. Код Sophia написан на языке Си и поставляется под лицензией BSD.

Ключевыми изменениями в Sophia 2.2 являются новые схема хранения и архитектура хранения. Новая схема хранения базируется на построчном размещении, при котором каждая строка включает ряд полей произвольного типа. Подобный подход позволяет снизить накладные расходы при размещении данных в хранилище, например, числа и метадданые могут хранится в более компактном представлении непосредственно в строках (rows). Кроме того, новая схема позволят организовать работу со вторичными индексами. Что касается новой архитектуры хранения, то её основной особенностью является обеспечение постоянной производительности операций чтения, записи и сканирования диапазонов, не зависящей от размера хранилища (O(1)).

Основные особенности СУБД Sophia:

  • Быстрая запись (Append-Only) и оптимизация на чтение;
  • Соответствие требованиям ACID (атомарность, согласованность, изолированность, надежность);
  • MVCC-движок для обеспечения одновременного конкурентного доступа к БД (Multi-Version Concurrency Control);
  • Транзакции, которые могут охватывать несколько операций;
  • Консистентные курсоры;
  • Снапшоты;
  • Возможность хранения нескольких БД в одном файле;
  • Поддержка сериализированных представлений;
  • Многопоточный движок и возможность использования в многопоточных приложениях;
  • Поддержка создания горячих бэкапов, создаваемых на лету без приостановки работы;
  • Простой API, лёгкая интеграция с приложениями, отсутствие сторонних зависимостей. Для работы требуется только два файла на языке Си.
  • Поддерживаемые технологии хранения:
    • Дисковое хранение - для хранения используется жесткий диск или Flash-память. Запись кешируется в памяти для последующего сброса на диск.
    • Анти-кеширование - оперативная память становится основным хранилищем. Холодные данные читаются с диска или Flash-памяти.
    • Постоянное кеширование - Второе хранилище используется в паре как LRU-кеш в оперативной или Flash-памяти для горячих данных. Холодные и горячие данные дублируются в основном хранилище.
    • Постоянное хранение в памяти - данные хранятся в оперативной памяти и постоянно сохраняются на диске. Поддерживается сжатие данных в памяти.




  1. Главная ссылка к новости (https://groups.google.com/foru...)
  2. OpenNews: Выпуск встраиваемой СУБД Sophia 2.1
  3. OpenNews: Релиз встраиваемой СУБД Sophia 1.2.3
  4. OpenNews: Выпуск встраиваемой СУБД Sophia 1.2.2
  5. OpenNews: Sophia - новая встраиваемая СУБД, оперирующая данными в формате ключ-значения
Автор новости: Dmitry S
Тип: Программы
Короткая ссылка: https://opennet.ru/44977-sophia
Ключевые слова: sophia, database
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (51) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 09:29, 17/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Это аналог SQLite?
     
     
  • 2.2, ae (?), 09:42, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    нет, это key-value бд.
     
  • 2.52, Аноним (-), 09:57, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    это скорее дальний родич беркли дб, чем склайт. без блэкджека и проблем лицензионных но зато с минимизированным оверхэдом на эксплуатацию и упрощенной интеграцией на прикладном уровне.
    те для тех кому эрацев вроде d-ets маловато )
     

  • 1.3, Аноним (-), 09:42, 17/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Слава Вселенной, что оно не на каком-то Rust или Go.
     
     
  • 2.4, Игорь (??), 09:53, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Позвольте поинтересоваться, а чем обусловлена такая реакция к Rust? Просто интересно мнение людей, что не устраивает, например синтаксис, система лайфтаймов, владения и заимствования, либо же система типов? Вопрос не ради холивара! Просто интересно мнение инженеров.
     
     
  • 3.6, rob pike (?), 10:18, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • +10 +/
    Такая реакция на Rust обсусловлена в первую очередь сектой расто-манов, которые заполонили уже все интернеты своими хэлло ворлдами.
     
     
  • 4.9, Аноним (-), 11:04, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Rust-оманов значительно меньше чем Go-внюков. Вторые реально всю вселенную хотят на своем любимом язычке переписать.
     
     
  • 5.11, Аноним (-), 12:23, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    И правильно. Знаете почему? Мне очень интересно: почему бы и нет?
     
  • 5.12, Аноним (-), 12:28, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Потому что существует 1. ДОСТУПНАЯ, 2. понятная, 3. официальная, 4. постоянно обновляющаяся документация. Да-да. Надеюсь те, у кого есть уважение к своему времени, перейдут на RUST & GO...
     
     
  • 6.13, Аноним (-), 12:38, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Ага, вообще, уважение к себе в целом и полностью. Поддерживаю.
     
  • 6.23, Аноним (-), 18:55, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    От главы Lifetime в Rust Docs хочется глаза вырвать, настолько она замечательная
     
  • 6.59, Сбиряк (?), 19:00, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    С каких это пор читать man-ы наши небесные стало грешно?
     
  • 5.15, Мяут (ok), 13:19, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    На Go уже написан Docker (считай, новый продукт). На Rust _переписывают_ GNU coreutils: https://github.com/uutils/coreutils И кто тут переписывает вселенную?
     
     
  • 6.17, kai3341 (ok), 13:57, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    И в чём проблема? Нормальный тестовый проект для развивающегося языка.
    Вообще не понимаю хейтеров. Как будто их заставляют переписывать на Rust, например, тот же coreutils =)
     
     
  • 7.25, rob pike (?), 19:27, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Их не заставляют переписывать.
    Их заставляют продираться сквозь информационный шум, создаваемый поклонниками Go и Rust на каждом углу. Каковой в подавляющем большинстве случаев не несет с собой даже толики полезного сигнала. Если бы в этом шуме встречались хотя бы какие-то проекты где действительно применение каких-то интересных возможностей этих языков давало что-то полезное - в плане ли скорости разработки, надежности ли, безопасности ли, еще чего-то - что позволило бы реализовать какие-то полезные вещи, которые сложно, долго, неудобно было бы реализовать с использованием других языков.

    Посмотрите рядом топик про недо-monit на Go. Всё то же самое можно было бы сделать, например, на Perl - причем гораздо быстрее, спасибо CPAN - и точно так же запаковать одной из утилит в один файл без зависимостей. В сэкономленное время можно было бы добавить какой-то интересный функционал или хотя бы посмотреть что и как сделано в monit и подумать зачем оно так сделано - и даже написать об этом что-то интересное и может быть реализовать у себя какие-то подходы, которые еще лучше. Но это скучно, поэтому будем писать на Go и Rust велосипеды с одним квадратным колесом и заполонять ими все интернеты.

     
  • 6.22, Аноним84701 (?), 18:07, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > На Go уже написан Docker (считай, новый продукт). На Rust _переписывают_ GNU coreutils: https://github.com/uutils/coreutils И кто тут переписывает вселенную?

    Хуже, на расте даже ОСь накатали!
    https://www.redox-os.org/
    И работает она даже на реальных железках:
    https://www.redox-os.org/screens/
    Причем, в ходе разработки   авторы раста прислушивались к разработчику насчет желательных фич языка, вылезающих граблей и т.д. Даже вкатили https://github.com/rust-lang/rust/pull/32410
    А что там с Go, который вроде бы тоже c претензией на  "системное программирование"? )

     
     
  • 7.27, rob pike (?), 19:29, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    У Go действительно были такие претензии?
     
     
  • 8.35, Аноним84701 (?), 20:30, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    https golang org doc faq https github com golang go wiki GoForCPPProgrammers... текст свёрнут, показать
     
  • 7.47, angra (ok), 12:16, 18/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Одно слово - docker
     
  • 3.19, Sabakwaka (ok), 15:03, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >>  Просто интересно мнение инженеров

    Чтобы узнать мнение инженеров, нужно спрашивать инженеров?

     
  • 3.33, adolfus (ok), 19:55, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Под всем этим гайном, типа лайфтаймов, этого вашего владения и заимствования, лежит системная архитектура (СА), с которой даже на C не всегда получается эффективно повзаимодействовать, несмотря на то, что и СА и C -- суть абсолютно процедурные сущности. В связи с этим встает вопрос -- а нахрена выдумывать непроцедурные костыли и велосипеды, если в "отрасли" есть сотни и тысячи выверенных паттернов, которые можно эффективно реализовать на любом процедурном языке, в том чисел и C?



     

  • 1.7, rob pike (?), 10:28, 17/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    O(1) оно только
      - в идеальной сферической в вакууме машине Фон Неймана с единой ценой доступа к любой ячейке памяти
      - если оторвать MVCC (иначе раскатистое эхо от длинной очереди откатывающихся транзакций можно слушать при некоторых условиях довольно долго)
      - без http://sophia.systems/v2.1/admin/compaction.html
     
     
  • 2.10, funny_falcon (ok), 11:58, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Я сейчас не про твою критику Софии спрошу. Она частями разумна.
    (поправлю только, что O(1) - имелось в виду обращений к диску, а не вычислительных затрат).

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

    PS. если ты действительно Rob Pike, то приношу прощения.
    PPS. да, мой псевдоним тоже мало хорошего говорит обо мне :-)

     
     
  • 3.20, Mail (?), 16:09, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    "O(1) - имелось в виду обращений к диску, а не вычислительных затрат"

    так и запишем - в новости ложь.

    PS
    Я спрошу: неужели ты себя настолько не ощущаешь личностью, что не смог подобрать псевдоним, не ассоциированный с реальным человеком?

    PPS. если ты действительно Funny Falcon, то приношу прощения.
    PPPS. да, мой псевдоним тоже мало хорошего говорит обо мне :-)

     
     
  • 4.21, funny_falcon (ok), 16:19, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > PPS. если ты действительно Funny Falcon, то приношу прощения.

    Я действительно funny_falcon. Я не слышал ни о ком в it-сообществе, кто тоже бы использовал этот ник-нейм. Хотя, мне кажется попадался фотограф из Америки.

     
  • 3.29, rob pike (?), 19:35, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Я сейчас не про твою критику Софии спрошу. Она частями разумна.

    В каких же частях она *не* разумна? Это интереснее всего.

    > (поправлю только, что O(1) - имелось в виду обращений к диску, а
    > не вычислительных затрат).

    Это уже ближе к реальности. А что же с compaction? Он как учитывается в этой формуле? "Имелось в виду что 1 - это не совсем 1, а внутри него есть еще некоторое C"?

    > Я спрошу: неужели ты себя настолько не ощущаешь личностью, что не смог
    > подобрать псевдоним, не ассоциированный с реальным человеком?

    Ощущать себя - это не настолько важное "дело всей жизни" как ныне принято считать.

     
     
  • 4.31, funny_falcon (ok), 19:49, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >> Я сейчас не про твою критику Софии спрошу. Она частями разумна.
    > В каких же частях она *не* разумна? Это интереснее всего.
    >> (поправлю только, что O(1) - имелось в виду обращений к диску, а
    >> не вычислительных затрат).
    > Это уже ближе к реальности. А что же с compaction? Он как
    > учитывается в этой формуле? "Имелось в виду что 1 - это
    > не совсем 1, а внутри него есть еще некоторое C"?

    Log(2^48) = 48 (если по основанию 2)
    А диск медленнее памяти в 1000 раз (среднестатистический ssd, диск ещё медленнее в 1000 раз).
    Потому, если база, не влезающая в память, имеет O(1) обращений к диску и O(log N) поиск в памяти, то это в пределах нашей реальности можно округлить до сложности O(1).

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

    Хотя, безусловно, оно будет нагружать диск.

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

    Как бы, если не ощущаешь себя, то вообще не живёшь.
    "Ощущать себя" - не является достаточным условием, но является необходимым.

     
     
  • 5.34, rob pike (?), 20:22, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Если бы compaction здесь был *еще хуже* чем в LevelDB, то и смысла обсуждать бы не было. Проблемы LevelDB, впрочем, этим не ограничиваются, but I digress.

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

    > можно округлить до сложности O(1)

    Вы не задумывались, почему в учебниках по алгоритмам так не делают? Так очень много чего было бы "округлить".

    > не производит катастрофических пауз

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

    > безусловно, оно будет нагружать диск

    Не зависит ли эта нигде не учтенная compaction-нагрузка на диск от операций с БД? А если зависит, то где же эта зависимость в красивой формуле "О(1)"?

    > если не ощущаешь себя, то вообще не живёшь

    Изложите, пожалуйста, подробней вашу философскую концепцию жизни.

     
     
  • 6.36, funny_falcon (ok), 20:41, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > При округлении логарифмов советую посмотреть в сторону NVMe, их, знаете ли, уже
    > в ноутбуки и планшеты ставят. А также не забыть указывать, о
    > какой именно странице памяти речь - впрочем, об этом я говорил
    > в самом первом пункте.

    http://www.3dnews.ru/917044 - 440000IOP/s на чтение. Быстрее сходу не гуглится.
    Подозреваю, что это для pipeline-d (или multithreaded, если вам так понятнее) запросов.
    Т.е. латенси там будет явно больше 2000ns. Судя по другим бенчам, типичным будет 10000ns.
    Память - 60-100ns. Ок, не в 1000 раз, а в 100.
    Но и sophia в памяти держит не все ключи, а малую часть. Так что, можно договориться про
    коэффициенты 100 (чтение с диска) и 32 (работа в памяти).

    >> можно округлить до сложности O(1)
    > Вы не задумывались, почему в учебниках по алгоритмам так не делают? Так
    > очень много чего было бы "округлить".

    Делают. В последних параграфах, где даются советы по практической реализации.
    Типичный совет:
    "обращайте внимание на размер ваших данных, и константы, прячущиеся за O. Зачастую, O(N^2) бывает быстрее, чем O(log N), а O(1) - медленнее"

    >> не производит катастрофических пауз
    > На тех паттернах нагрузки, которые "имелись в виду"? На следующей итерации нашей
    > беседы мы сможем выяснить какие же это паттерны? Что же с
    > другими, которые в виду "не имелись"?

    Ты уже казуистикой занимаешься.

    >> безусловно, оно будет нагружать диск
    > Не зависит ли эта нигде не учтенная compaction-нагрузка на диск от операций
    > с БД? А если зависит, то где же эта зависимость в
    > красивой формуле "О(1)"?

    Нет, не зависит. Но тебе плевать на это.

    >> если не ощущаешь себя, то вообще не живёшь
    > Изложите, пожалуйста, подробней вашу философскую концепцию жизни.

    Зачем? Тебе же всё равно.
    Ты - не ты, и тебе на себя наплевать, раз чужое имя носишь, и во всеуслышание говоришь, что это не главное.
    Если тебе на себя наплевать, то почему мне должно казаться, что тебе на меня не наплевать, и на мою "философскую концепцию жизни"?

     
     
  • 7.37, rob pike (?), 23:09, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    80 000 ns это обычный NVMe SSD.
    10 000 ns это 3D XPoint.
    1 000 ns это NVDIMM.
       100 ns это RAM.
    Про NVMe over Fabrics пока не будем.

    Если в ваших учебниках не дается анализ худшего случая это не очень хорошие учебники.
    Если вы считаете что количество compaction в LSM-структурах данных не зависит от данных, вы считаете неверно.
    Если вы считаете что compaction в современных LSM-структурах данных не является ключевым фактором, влияющим на их производительность, вы считаете неверно.

    То что не только первоначальная эйфория, связанная с LSM, но и вторая волна - подход "достаточно снизить compaction frequency и свести большинство этой деятельности к hot data key-ranges" - уже остались в прошлом, вы не заметили.

    Вам нравится что вам не наплевать что Аноним в интернетах о вас думает?

     
     
  • 8.39, funny.falcon (?), 23:38, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    - убедили Если у вас столько денег, что вы сотнигигабайтные хранилища на NVDI... большой текст свёрнут, показать
     
     
  • 9.43, rob pike (?), 01:15, 18/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    NVDIMM пока позиционируется не столько для самого хранилища, сколько для индексо... текст свёрнут, показать
     
     
  • 10.46, funny.falcon (?), 07:22, 18/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Уууу Понятно Т е все таки, когда нашли где читать, потом опять идти в медленн... большой текст свёрнут, показать
     
  • 8.49, vatocefal (?), 13:39, 18/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Где посмотреть, что сейчас придумали вместо ... текст свёрнут, показать
     
     
  • 9.51, rob pike (?), 22:23, 18/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Не вместо , в дополнение к прошлым ухищрениям Поиски что бы такого с LSM сдела... текст свёрнут, показать
     
     
  • 10.55, Аноним (-), 10:50, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    в б-ве юзеркейзов проще юзать вещи вроде LMDB в проектах, где изящно обошли проб... текст свёрнут, показать
     
     
  • 11.57, rob pike (?), 11:26, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    В LMDB своих причуд хватает - на уровне технического исполнения, так что лучше ф... текст свёрнут, показать
     
     
  • 12.62, Аноним (-), 15:40, 20/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    ну, безупречных вещей нет и LMDB использована сугубо для примера но это в б-в... текст свёрнут, показать
     
     
  • 13.66, rob pike (?), 15:51, 21/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Работает, когда не не работает 1 LevelDB тоже работает при определенных обстоя... текст свёрнут, показать
     
     
  • 14.67, Led (ok), 22:23, 21/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Да, всё вышеперечисленное - работает Ты просто рукожопый гуманитарий на ставке ... текст свёрнут, показать
     
  • 14.68, Аноним (-), 23:41, 21/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    зря вы так куча проектов на все этом есть те что на редис - я даже подпиливал ... текст свёрнут, показать
     
  • 10.58, vatocefal (?), 15:56, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А что из существующих реализаций самое продвинутое Чтобы код можно было посмотр... текст свёрнут, показать
     
  • 4.32, funny_falcon (ok), 19:51, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Поправляюсь:
    "Ощущать себя" - не является достаточным условием, но является необходимым.

     

  • 1.8, Аноним (-), 10:55, 17/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Как оно в сравнении с rocksdb?
    Вторичные индексы это хорошо, когда они действительно заработают
     
  • 1.30, adolfus (ok), 19:42, 17/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Чем оно отличается от BerkeleyDB?
     
     
  • 2.53, Аноним (-), 10:02, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Чем оно отличается от BerkeleyDB?

    можно крутить хранение данных Явно в отличие от, двигая между подходами принудительно.
    нету проблем лицензионных(оркаль и ко).
    медленее.
    а так - набор фич таки-разный, Если вчитываться.
    и таки-да, беркли чуть пошустрее, но учитывая разницу в динамике развития я бы не сильно расчитывал что это надолго.


     

  • 1.44, Аноним (-), 04:18, 18/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Автору благодарности
     
  • 1.48, Шарпей (?), 12:57, 18/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    А для C# у них обёртка есть? Вижу только для джавы и хипстерских руби-питонов.
     
     
  • 2.54, Аноним (-), 10:03, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > А для C# у них обёртка есть? Вижу только для джавы и
    > хипстерских руби-питонов.

    C# еще более хипстерский, внезапно.

     
     
  • 3.61, Шарпей (?), 23:38, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    C# не может быть более хипстерским, потому что у него есть компилятор, в том числе и в нэйтив код. А питоновские скриптики - это баловство для школьников, которое по некоторому недоразумению слишком часто стало применяться в крупных проектах.
     
     
  • 4.63, Аноним (-), 15:42, 20/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > C# не может быть более хипстерским, потому что у него есть компилятор,
    > в том числе и в нэйтив код. А питоновские скриптики -
    > это баловство для школьников, которое по некоторому недоразумению слишком часто стало
    > применяться в крупных проектах.

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

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2020 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру