20 окт. 2017 г.

К вчерашнему совещанию

Вот уже около 20 лет нам сильно мешает то, что при создании Гедымина мы сразу не решились многие вещи сделать самостоятельно, с нуля. Тогда мы думали: как, менять структуру базы данных? Это слишком сложно, просто не реально. Нам не хватит ни сил, ни знаний. Интерпретатор языка? Нет, слишком серьезная задача. Будем использовать готовый Windows Script Host. Собственный грид для отображения данных? Шутите? Максимум мы подправим тот, что предоставил нам Borland.

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

Поэтому сейчас мы не боимся ни сложности задач, ни объемов работ. Как говорится: дорогу осилит идущий.

JS vs TypeScript vs Flow


Прелесть JS в слабой типизации. Обратите внимание на свойство enabled:
topScores: {
  id: 10050,
  caption: 'Top scores...',
  keyValue: 'F9',
  enabled: () => this.props.gameStage === gameStageEnum.ready,
  checked: false,
  exec: () => {
    const { dispatch } = this.props
    dispatch(showTS())
  }
},
nextPiece: {
  id: 20010,
  caption: 'Next piece',
  keyValue: 'F3',
  enabled: true,
  checked: () => this.props.nextPiece,
  exec: () => {
    const { dispatch } = this.props
    dispatch(nextPiece())
  }
},
Для быстрого прототипирования бесценное качество. Но, попытку изменить что-то в существующем коде отсутствие строгих типов способно превратить в ад из миллиона сложно выявимых ошибок, которые будут проявляться только в момент выполнения и только в определенных обстоятельствах. Как правило, в разгар ключевой презентации у важного клиента.

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

TypeScript это не только контроль типов, но и более-менее приближенная к знакомой всем парадигме реализация ООП.

Winner: TypeScript

Технологический стек

TypeScript -- язык программирования.
Node + Express -- сервер.
Firebird 3 -- база данных. Будем так же смотреть на применимость MongoDB к части наших задач.
React/Redux -- фронтальная часть.
UI стили и компоненты -- выберем позже.

Начальные проекты

ng-back -- создан на основе шаблона TypeScript Node Starter. Требует запущенного сервера MongoDB (устанавливается отдельно).

ng-front -- создан на основе шаблона Create React App c опцией для TypeSript. Подробности по использованию React/Redux вместе с TypeScript  собраны тут.

ng-lingva -- запросы к данным на естественном языке.

ng-scratch -- визуальное проектирование/кодирование алгоритмов.

PS: ng stands for Next Gedemin or New Gedemin.

10 комментариев:

Анонимный комментирует...

UniGUI в помощь ;)

Andrei комментирует...

Сколько таких библиотек было и сколько еще будет... Мы не хотим тянуть десктопный интерфейс ни в браузер, ни тем более в мобильные девайсы. Это разные среды, требующиеразных подходов.

Анонимный комментирует...

Эмба (уже Идера) купила сенчу (Sencha), будет делать свой веб-фреймврок на связке с сенчей, либо купит Унигуй.
Библиотек было много. Но это первая хорошая (можно сказать - отличная).
В ней разделены компоненты под десктоп и под мобильные девайсы. Переключается автоматически. Гуй переносится быстро и просто. Миллионно-сточное приложение + 50 форм перенеслось с вин-гуя на унингуй за, примерно, месяц. Еще месяц тестирования, и уже готовим софт к продажам.

Анонимный комментирует...

Ну а хочется по....ся - дело ваше, конечно :)

Andrei комментирует...

За Борланд меня агитировать не надо. Я с Turbo Pascal 4.0 начинал еще. Но, кроме гениальных решений у них были и откровенные провалы: Delphi6 + CLX, который так и не начал компилировать под Linux, но на много лет заморозил развитие VCL, Delphi 8 + .NET, который был мертворожденным изначально, но полностью испортил IDE (потребовалось выпустить три версии, чтобы как-то разгрестись и привести все к удобоваримому виду), компилятор 64 бит, выпущенный 20 лет спустя, после того как вышел первый 64-битный процессор, библиотека Firemonkey, которая так и не стала вменяемой кросс-платформенной библиотекой интерфейсов и т.п. Не будем вспоминать компилятор, который местами генерирует код байт-в-байт как в 1998 году. И список можно продолжать и продолжать. Что выйдет в этот раз -- посмотрим. Меня сейчас больше устраивает скорость развития вокруг JavaScript -- изменения в языке, новые библиотеки, инструменты, сообщество. Но, это наш путь, единственно ли он правильный и правильный ли вообще -- поживем увидим.

Анонимный комментирует...

Намного приятнее сердцу фреймворки сменяющиеся по два раза в год. Редко совместимые вверх по api. Даже в пределах одного 'семейства'.
Удачи, в общем :)

Andrei комментирует...

IDERA купила Sencha потому что последняя стала стоить дешево. IDERA это не разработочная компания, а инвестиционная. Их политика проста -- купить, снизить стоимость по максимум за счет аутсорса в дешевые регионы всего и вся и выкачать максимум денег из существующей клиентской базы. Sencha -- это таже Делфи, только в своей нише. Прекрасный продукт, но, скажем, 5 лет назад. После этого они устарели и отстали от мэйнстримного направления. и догнать им будет не просто. слишком много надо переписывать полностью. uniGUI это обертка вокруг компонент Sencha для использования с Delphi. Кстати, что там по цене? Delphi + uniGUI + Sencha. Для нормальной разработки все надо с исходниками. Цена такого комплекта 6-8 тыс. USD на одного разработчика. И сюда надо еще какую нибудь СУБД докинуть. С таким ценником никакого широкого продвижения и развития не будет.

Анонимный комментирует...

1. Идера купила сенчу потому, что увидела нишу для развития своих продуктов.
2. "IDERA это не разработочная компания". Покупка-продажа целых компаний - это обычная практика на западе. С таким же успехом можно и Microsoft не компанией-разработчкиком назвать.
3. Мы, например, довольно активно аутсорс используем. Бывает весьма удобно.
4. "Прекрасный продукт, но, скажем, 5 лет назад.". Интересно, в каком месте они отстали? Для того, что бы сделать графический интерфейс к ПО их возможностей хватает с головой. К слову - в Ангуляре визуальных компонент нет вообще, насколько я понимаю. Придётся либо с нуля весь слой компонент делать (хотя бы те же гриды), либо искать что-то готовое. Унигуй же даст кроме собственно сенчи больше сотни готовых компонент для десктопа (отличные и довольно продвинутые гриды, к слову) + штук 50 под мобильные.
5. "Цена такого комплекта 6-8 тыс. USD на одного разработчика.". Странные какие-то цифры. $1500 Delphi + $900 Унигуй + Сенча. Унигуй - компоненты с исходниками, правда - их нельзя раздавать. Делфи будет более открытый.
6. "И сюда надо еще какую нибудь СУБД докинуть." Ну вы же в любом случае будете что-то использовать. Тот же FB совершенно бесплатный, Postgre тоже. Мы у себя как раз обе указанные базы используем.

Анонимный комментирует...

За эти же деньги, к слову, вы получаете год бесплатной поддержки со стороны унигуя. Поддержка работает довольно хорошо. Оперативно всё правят и помогают на форуме.
Также заметный плюс - JS разработчики в команде вам либо не нужны вообще, либо нужны ограниченно, на этом можно заметно сэкономить. Разрабы тоже как бы платные. И, по своему опыту, более дорогие, чем инструменты.
Всё делается на стороне Делфи, фронт + бэк связаны в пределах одной среды, разрабатывать очень удобно - отладка, тесты.
Проект можно собирать в трёх 'ипостасях' - Standalone, Service, ISAPI переключением одного дефайна.
Порт вингуевого софта на веб делается быстро и просто.

Анонимный комментирует...

serbod: У вас основная область применения - это автономные настольные системы и торговое оборудование. Там от веба больше проблем, чем пользы. Вам проще прикрутить веб как "TForm без кода", чем делать новый бекэнд.

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

Отправить комментарий