Comments 28
Да, и вообще, slack — это фактически irc с web-клиентом. Для irc написан миллион клиентов, в том числе на C для консоли, которые занимают менее 1 Мб RAM.
Только slack умудрился несмотря на все тайпскрипты раздуть простой irc-клиент до нескольких гигабайт.
Воистину, js — это новый PHP.
Проблема современных приложений в том, что сначала прототип пилят те, кто хоть как-то что-то могут рабочее запрототипировать (часто это даже не инженеры). Рэйзят деньги у инвестора или ангела (обычно мало), нанимают пару чуть более толковых ребят и ставят перед фактом, что денег мало, сроки горят, надо сделать чтобы как есть, но чуть лучше. Ну а дальше кодовая база начинает разрастаться так, что легаси вяжет по рукам и ногам, а переписать все боятся, потому что в компании появились «умные» руководители, которые будут рассказывать про риски, сроки и пр. И кульминация ситуации в том, что за счет непомерно взрывного роста клиентской базы (как у того же Слака) компания временно становится монополистом, все начинают думать про опционы, акции, раунды и на реальную пользу продукта все резко забивают.
Корень бед мне видится в пороге вхождения. Научиться грамотной инженерии ПО сложно, а людей нужно много, и отрасль готова принять любое количество людей любой квалификации.
Помнится лет 10 назад я хейтил Java. Медленная дескать тормозная, память кушает. Думал, что хуже быть не может. Как же я ошибался…
А самое главное, что пока хороший продукт будет пилиться, он уже выйдет из моды. Сейчас время быстрых хайпов. «Оп-па, смотрите, у нас продукт на NoSQL!», «А у нас ИИ», «А у нас Blockchain!», «А у нас Node.js».
Эти хайпы сменяются за период, в который вряд ли можно разработать качественный продукт. И многие подобные продукты не несут никакой реальной пользы, они взлетают на волне моды, после чего о них совершенно забывают, т.к. они бесполезные и плохо реализованы.
Например, уверен, что через 10 лет никакого Твиттера уже не будет, т.к. это абсолютно бессмыссленная соц. сеть, и они сами уже много лет не могут придумать как ее позиционировать. Слака скорее всего тоже не будет, его заменит, что-то похожее, но более модное.
И эта смена хайп-технологий будет только ускоряться. Времени на вылизывание, исправление ошибок, проектирование архитектуры, не будет. Надо быстрее выкатить новый модный снэпчатик, и попытаться срубить денег и славы в короткий момент популярности.
Дело в цене скорее всего. С точки зрения владельцев такой конторы можно пойти по пути Qt и искать программёров за $150к или выбрать JS и платить раза в 1.5 меньше. К тому же со временем процессоров в телефонах будет всё больше, батарейку есть они будут всё меньше, и весь этот JS будет работать в фоновом потоке (подозреваю, что оно уже так и работает).
100 лет будете писать на Qt такой же rich гуй, хотя скорее всего плюните и полгуя будет в QtWebView на том же хтмл+жс.
Например:
export function spawnDetached(exe: string, params: Array<string>, opts: any = null): Observable<string> {
и дальше
opts || {}
Почему не сделать сразу так?
export function spawnDetached(exe: string, params: Array<string>, opts: Object = {}): Observable<string> {
...
assign({}, opts, { detached: true })
Вместо этого
let stderrCompleted: Subject<boolean> | Observable<boolean> | null = null;
достаточно
let stderrCompleted: Observable<boolean>;
Subject наследуется от Observable. И в чем смысл присваивать null, если дальше по коду это не проверяется, а сразу идет присвоение?
Также я считаю лишним дублировать тип переменных в jsdoc.
Поправьте, если я ошибся.
ЗЫ: Не ради стеба, мне действительно интересно.
TypeScript в Slack