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.

16 окт. 2017 г.

7 окт. 2017 г.

Новое в gedemin v. 2.9.4. См. историю изменений.