LINUX.ORG.RU

Typescript, как ведущая технология.

 , ,


0

3

Встал вопрос выбора технологий под новый проект.

Накидайте плюсов typescript, господа, владеющие данным ЯП.
Сам пока насмотрелся дивных косяков и неприятных моментов:

1 Не нужен без IDE. В редакторых без обвеса бесмыссленно на нём писать. Предлагаемый VSCode тырит всё, к чему может дотянуться (прописано в лицензии и в требованиях к дополнениям)
2 Прямо из документации: Null и его весёлые проблемы, простой тип Boolean, точно Вам говорю! Ссылки на «нормально». Да весь раздел по ссылке весёлый.
3 Это надо разбираться и уметь, а те, кто клепает на React/Vue, да и просто большинство - не знают, как вообще работает JS или ИХ выбранный framework, куда им до выведения типов, сложно, короче.
4 Всегда стремает MS. Сколько я с ней не работал, везде отношение " пользователь - не человек".

А так, если на этот список закрыть глаза, очень здравая идея.



Последнее исправление: Neuromagus (всего исправлений: 3)

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

Просто удалением типов. В TS конечно есть исторические фитчи влияющие на результирующий js код, но их использование в проектах не приветствуется.

Вместе с классами, декораторами и всем кодом, который связан с твоим eval'ом? То есть чтобы сделать надо собрать заново проект.

Один из главных плюсов TS - возможность его использовать настолько насколько он полезен.

Но его так не используют. Сразу уберают в линтере any и всех бьют, иначе смысл.

А других способов и нет.

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

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

Один из главных плюсов TS - возможность его использовать настолько насколько он полезен.

То у тебя опыт однобокий. Когда начинаешь думать через типы… И any - это рак. Даже крокодил Петрович (Matt Pocock) на всю Ивановскую из Youtube поёт. На волне даже сделал https://www.totaltypescript.com, чтобы рубить бабло учить свету!

Neuromagus
() автор топика
Ответ на: комментарий от crutch_master

А ты можешь объяснить в чём говно?

Я-то могу, но ты же слушать не станешь. Это еще с Луговским было. Но попробую: умножь то что ты написал в 10 раз, добавь наследование, добавь бизнесовые методы и представь что ты работаешь над проектом не один. Что вас таких десять. И сроки горят.

Долго оно все проживет до первых ошибок, как думаешь?

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

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

Вместе с классами, декораторами и всем кодом, который связан с твоим eval’ом?

Классы есть в js давно. Декораторы тоже есть с недавнего времени, но конечно же декораторам не место в хорошем коде как и классам.

Но его так не используют. Сразу уберают в линтере any и всех бьют, иначе смысл.

А еще миллионы мух не могут ошибаться. Если же обратиться к 1% то окажется что так его и используют. В моем опыте за который мне платят уход от догматизма повышает и скорость разработки и легкость поддержки.

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

Тогда TS придется влиять на рантайм код что убьет возможность его использования только как линтера и собирать проекты на 100к+ строк кода за 5-10 секунд например с esbuild (умеет вырезать TS типы).

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

Долго оно все проживет до первых ошибок, как думаешь?

Столько же, сколько клубок из ооп дристни. Ты же не рассматриваешь вариант, что у тебя классический ооп говносрач и ты не можешь добавить две недели фичу, а сроки горят, лул.

Я-то могу, но ты же слушать не станешь.

Ну, ты попытался.

Язык программирования это не более чем соглашения, понятные всем сторонам и принимаемые всеми сторонами

Библиотека/фреймворк на котором вы там что-то делаете - такое же соглашение. В чем разница между ооп фреймворком и всём тем, на чем пилят везде ресты. Что у фреймворка можно возможности расширять, а у недоязычка нет? Хочешь поспорить вон, посмотри на спринг, ломбок и во что они превратили своё правильное ооп.

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

Мне ни плюсы ни dotnet не интересны. Совсем. Мне интересен TS и как его используют. Так как сам на нём писал после C# но ещё на dotnet core 2, немного 3, используя Angular. Теперь видно влияние MS research как в C#, так и в TS.

Neuromagus
() автор топика
Ответ на: комментарий от crutch_master

Библиотека/фреймворк на котором вы там что-то делаете - такое же соглашение. В чем разница между ооп фреймворком и всём тем, на чем пилят везде ресты. Что у фреймворка можно возможности расширять, а у недоязычка нет?

Нет разницы, ты верно заметил.

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

ООП банально проще, позволяет быстрее накидать и сдать барину очередную порцию корпоративного говна и наконец свалить с этой проклятой работы.

Поэтому играем мы на одном а работу сдаем на другом, так все и делают.

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

Теперь видно влияние MS research как в C#, так и в TS.

M$ старой школы вполне мог бы выкинуть финт ушами и запихнуть поддержку нативного Typescript сразу в свой браузер Edge, назвав это все своим «собственным джаваскриптом».

Но MS уже не та и у индуса во главе уже нет клыков Балмера. Соевые порриджи победили.

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

Зачем тебе ts, пиши дальше на дотнет/жабке. Зачем тебе эти либы говна из npm? Зачем тебе nodejs с v8? Зачем тебе нодовская экосистема с микрозависимостями? Зачем тебе платформа, где все решается исключительно в рантайме с какими-то тупарями, которые такие, ы, давайте типы, шота непонятно, что мы тут наговнякали и где кто что возвращает.
Нода - это платформа сильная сторона которой - быстрая разработка. Ты можешь взять код, тут же его исполнить и посмотреть результат. Хттп запрос куда-нибудь кинул, обработал, посмотрел, кинул дальше. Там челы посмотрели, сказали «годно», сделал нормально с типами и феншуем. Или прототип чего-нибудь быстро наваял за пару дней, отдал потыкать, зашло, сделал нормально. Или обкатать по-быстрому какие-то вещи, сервисы, либы, т.е. горячий код, написал, исполнил, посмотрел результат, отработал всякие кейсы на той стороне, потом сел писать нормально, чтобы можно было после тебя разобрать.
Еще на жс и вообще языках с динамической слабой типизацией очень удобно делать всякие абстрактные системы, когда тебе надо работать с различными структурами данных, манипулируя составом этих структур на основании других данных, а не конкретно инструкциями в коде. Т.е. писать в декларативном стиле. Впрочем, если хочется именно быстро толпой говнякать и страдать, такое вряд-ли заинтересует, потому-что тут надо сначала запрягать долго.

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

ООП банально проще, позволяет быстрее накидать

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

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

ООП банально проще

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

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

Слушай, ты просто не тому это пишешь, что типично для фанатика. Ну и не слышишь других конечно.

Я старый, уже очень давно живу на свете и всю твою горячую ненависть к «быдлоязыкам» проходил с Tcl , а это уникальный язык, построенный на функторах и замыканиях и при этом очень простой и читаемый.

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

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

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

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

А как же магия SICP?

Это мы тоже проходили.

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

А это для магов уже скучно.

И снова получаются два стула: либо взять мага и получить максимум 5% профита либо взять стадо быдлокодеров и получить все 100.

Сам бы что выбрал, только честно?

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

Я поддержку не воспринимаю тем, кто создал. Глаза у него не горят, он уже горит другим. А кто видит проект впервые, горит. Вот и всё. А кого брать - это от документации зависит, вкатить можно любого.

Neuromagus
() автор топика
Ответ на: комментарий от alex0x08

В тикле очень своеобразные замыкания, если их можно вообще так называть. Я уже конечно почти всё забыл, но помню, что там dynamic scoping и приседания с upvar и uplevel. В общем, среднему пограмисту лучше такое в лапки не давать. А в целом с тиклем очень приятно было работать. Но есть такой момент: любителей тикля неуклонно сносит в метапрограммирование вместо решения практических задач. Например, изобретение объектных моделей было прямо обязательной дисциплиной для каждого уважающего себя гуру тикля. И это преподносилось как большое преимущество языка. Типа, смотрите какой мощный ЯП, каждый может наваять свои объекты (прямо как crutch_master со своим наколенным классом, за который в приличном обществе будут бить канделябром по жопе). На практике же тупой ЯП с тупыми (но стандартными) объектами всегда заруливает все эти наши мета-лиспы. Исключение это как раз жаваскрипт, который случайным образом пролез в мейнстрим и наделал там столько боли.

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

Я поддержку не воспринимаю тем, кто создал.

Ну продолжай не воспринимать, что тут скажешь. Просто 95% прибыли с проекта проедут мимо тебя.

Глаза у него не горят, он уже горит другим.

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

вкатить можно любого.

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

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

Пфф, ты меня не понимаешь. Жаль это читать. Жаль читать, как ты годами сидишь на поддержке, страдая от рутины.

«А потом они учат нас, как жить». Понимаешь?

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

Жаль читать, как ты годами сидишь на поддержке, страдая от рутины.

Это ты не понимаешь.

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

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

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

А ты хоть один —язык— знаешь, который это умеет делать? https://nodejs.org/api/dgram.html

Насколько я понимаю, это приём и отправка UDP-пакетов из серверной части ПО. А каким образом отправить и принять эти же пакеты с вэб-страничной части ПО на Джаваскрипте или Тайпскрипте? Суть моего вопроса в том, чтобы на одном языке писать серверную и вэб-страничную части ПО.

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

А каким образом отправить и принять эти же пакеты с вэб-страничной части ПО на Джаваскрипте или Тайпскрипте?

Ну а в поиск вбить запрос никак?

Суть моего вопроса в том, чтобы на одном языке писать серверную и вэб-страничную части ПО.

Посмотри на Scala.js, хотя даже я это считаю дичью (а я кое-чего понимаю в дичи).

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

А каким образом отправить и принять эти же пакеты с вэб-страничной части ПО на Джаваскрипте или Тайпскрипте? Суть моего вопроса в том, чтобы на одном языке писать серверную и вэб-страничную части ПО.

Никак. Есть только http, WebRTC и вебсокеты. Только через какую-то штуковину на сервере.

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

Никак. Есть только http, WebRTC и вебсокеты. Только через какую-то штуковину на сервере.

Если использовать перекладыватель данных из HTTP в UDP и обратно, то растеряется малая задержка обработки UDP-пакетов. Тогда и смысла нет использовать UDP-пакеты: даже если на сервере быстро отправим данные через UDP-пакет, так в интернет-обозревателе получим данные с еще большей задержкой, чем если бы просто отправляли HTTP-пакетом изначально.

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

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

Enthusiast ★★★
()

Предлагаемый VSCode тырит всё, к чему может дотянуться (прописано в лицензии и в требованиях к дополнениям)

vscodium есть

а вообще слива данных в microsoft (или в гугл), как по мне, сейчас наименьшее, чего стоит бояться

el-d ★★
()
Ответ на: комментарий от alex0x08

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

Так наши разработки тоже в поддержке. Но когда ты создал,то максимум год, потом мы передаём на людей «с горящими глазами», а сами делаем что-то новое. Был чел, не отдавал два годика, на конец второго у него был срыв и он просто стал вести себя деструктивно по отношению к детищу. Цифры и пеня в случае отказа не останавливала.

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

Но когда ты создал,то максимум год, потом мы передаём на людей «с горящими глазами», а сами делаем что-то новое.

Угу, прям свежа былина.

Вот для примера, взято с одного из текущих проектов. Видишь желтенький блок и описание со словом CVE? Это среда разработки любезно поднянула данные об уязвимостях в этой конкретной библиотеке. Если проект был сделан год назад то таких желтеньких блоков будет много, буквально через один. И все это - дыры, про которые знают роботы, делающие автоматический взлом.

А вот например что выдает npm install на свежем boilerplate JHipster:

32 vulnerabilities (7 moderate, 23 high, 2 critical)

Через год тут везде будет по нулю у цифр сзади.

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

В лучшем случае просто зашифруют диск и будут вымогать биткойны, в худшем - сольют данные заказчика.

Напоминаю, что все это работает в полуавтоматическом режиме, с минимумом участия человека.

Как это все исправлять? Исключительно вручную, обновляя а временами - исправляя вручную чужие библиотеки. И боюсь что никакие горящие глаза тут не помогут.

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

Ничего я не путаю, до пандемийного 2020го точно также сдавали на поддержку в теплые руки, а потом понеслось.

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

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

Если за год не наладили процесс - бить чайной ложечкой до летального исхода. Зубра на поддержке держать - потеря зубра. Его надо кормить хорошей для мозгов «едой», а то сбежит к тому, кто предложит интересный проект.

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

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

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

Да хоть косой и одноногий - на дворе война, если ты вдруг не заметил. И перекидывание говном в мировом масштабе.

Скоро сисадминам и DevOps погоны будут выдавать, поскольку поддержка крупного ресурса превращается в боевые действия: c одной стороны постоянный DDOS, ботнеты и боевые киберхохлы, с другой - родной РКН с «рубильником интернета».

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

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

Тут другой «Зубр» нужен.

У меня абсолютно все более-менее толковые коллеги уехали из страны, по-сути никого сопоставимого уровня не осталось. И так далеко не только у меня одного.

Поэтому тут выбор не «зубр/олень» а кто вообще есть и доступен.

alex0x08 ★★★
()