Annual Open Tech Conference - ISsoft Insights 2021. June 19. Learn more.
×Закрыть
Lead JS Software Engineer в Exadel
  • TypeScript как будущее энтерпрайзного JavaScript. Часть 2

    Пожалуйста, не откапывайте эту стюардессу, почитайте треды выше — там достаточно жести и есть практически все аргументы во все стороны и против, и за, и вширь, и вкось...

  • «Розетка» продает левую контрабанду и не платит налоги

    Почти оффтоп — про цены, крупные торговые сети и производителя.
    С пол года назад, желая купить новую хорошую зеркалку естественно я наткнулся на дичайший разлет цен на агрегаторах — явный серый левак с довольно низкой ценой, с минимальной гарантией, явно с вилкой для розетки на другой планете и т.д. И высокая цена в именитых торговых сетях, к тому же одинаковая как под копирку.

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

    Самая высокая цена (я не беру совсем аномальные максимумы, что с теми магазина не так, я не знаю) у крупных торговых сетей с десятками представительств по стране — крупные ресселеры (к коим относится Розетка, как агрегатор или нет, не знаю). Они получают фактически прямые инструкции от производителя «Цену ниже N ставить нельзя.» Таким образом, производитель получает примерно одинаковую цену по всему миру. Посмотрите на цену хорошей зеркалки, она будет различаться в несколько баксов на амазоне и тут, будто доставка сюда, растоможка и налоги ничего не стоят.
    Если крупная сеть пойдет наперекор, они просто в следующий раз не получат товар, у них заберут шильдик официального продавца и прочую мишуру... ну и конечно прямой линк к ним с сайта производителя. Но даже эти продавцы не могут держать высокую цену вечно — им нужно движение. Потому они частенько запускают АКЦИИ по которым, за туже крупную сумму, вам выдают в виде подарков какие-то аксессуары, будь-то чехлы, сумки, штативы. Это означает, что фактическая цена упала ровно на стоимость этих допов. Т.е. вы правильно поняли — высокая цена у них часто продиктована не только необходимость оплачивать футбольные поля торговых залов в торгово-развлекательных центрах и армию консультантов — на дорогу технику цену часто диктует сам производитель, хотя юридически, я склонен думать, что это никак не описано.

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

  • TypeScript как будущее энтерпрайзного JavaScript. Часть 2

    Таки зря извинился.
    Нам с вами не о чем разговаривать. Мне безумно жаль потраченное на вас время. Прощайте.

  • TypeScript как будущее энтерпрайзного JavaScript. Часть 2

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

    Это вы усомнились в моих знаниях на ровном месте, не я в ваших. Приношу извинения, если не так понял, хотя по прежнему уверен, что понял правильно.

    Во всем этом холиваре вы и Александр, упорно игнорирует факт — вы не пробовали TS. Вы не пробовали написать, что-то не простое что бы просто посмотреть А как оно вообще?

    Вы тянетесь за новыми знаниями в виде сиюминутного примера, киллер-фичи, при виде которой вы могли бы воскликнуть О как круто! Как я раньше жил без этого? Или Вот точно это не полетит, это трата времени, нам не по пути, закрыть табу и забыть. Но так не бывает. Это всегда процесс. И я не могу залезть вам в голову и вложить туда свою картину мира. Вы рисуете её себе сами. Так нарисуйте и поговорим по делу. Я написал эти статьи после нескольких месяцев работы с TS, уверен, это отражено в тексте. Потому, я не просто примерчики из документации повертел. Хватит трепа и сведения всего к примитивным вопросам.

  • TypeScript как будущее энтерпрайзного JavaScript. Часть 2

    О забомбило-то как, а? Видать угадал))

  • TypeScript как будущее энтерпрайзного JavaScript. Часть 2

    Говоря про ООП и типы, вы спутали корову с яйцом. Даже в чистейшей функциональщине, для мьютабельной константы, компилятору нужно понимать, как работать с памятью — обрабатывая 42 выделить 2 байта (в простейшем случае) под строчное представление двух символов или обойтись одним байтом.

    Говоря про IDE driven development и большую кодовую базу — вы опять сравниваете горячее с красным и путаете причину и следствие. Генерация кода и автокомплит возможны там, где известна структура, где она предсказуема статически.
    Читая Что нового в WebStorm мы то и дело видим Улучшение поддержки конкретного фреймверка, тогда как тот же список для java IDE редко имеет подобные пункты. Все дело в костылях — для популярных фреймверков IDE имеет пресеты и внутренние подсказки анализатору кода. Вот только шаг в сторону по структуре проекта или превышение порога сложности и он сливается чуть менее чем плностью. Потому я IDE и не использую.
    Откровенно огромные абстракции, множество слоев и фремверков в java-проекте вынуждают иметь автокомплит и интеллектуальные сниппеты для ускорения процесса разработки.

    А проблема JS, на мой взгляд — в среднем возрасте JS-кодера, который со студенческой статьи пороху не нюхал, а нашел себе «простой» яп и jQuery. Это уже потом он начинает понимать куда попал, но уже поздно, уже middle’а получил и ЗП, он и продолжает гнуть свою хипстерскую линию и плодить треш в npm.

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

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

  • TypeScript как будущее энтерпрайзного JavaScript. Часть 2

    Причем здесь ООП вообще? Или вы считаете, чо на TS нельзя финкциональщину писать?

    Почему джависты могут генерить приложения одним только автокомплитом? А почему в JS это невозможно? Потому что один строго-типизированный, минимум динамичесности. А в JS, пока вы реально не запустите код, у вас нет никаких ответов ни о чем дальше 10 строк от курсора. В большой кодовой базе это становится проблемой не только IDE, но и всех разработчиков. Интерфейсы, обстрактные классы — это все про строгость декларации. Вам и IDE сможет помочь и компилятор на ошибки укажет. jsDoc не ответ, т.к. никто их не пишет толком и у каждого свое ощущение красиво/правильно оформленного комментария; впрочем и синтаксис слишком ограничен, чтоб на что-то надеяться.

    Но «патерны», «подходы», «каждую неделю новый революционных фреймверк», сходил в отпуск без интернета на месяц — вон из профессии, ты безнадежно устарел, поезд ушел.

    Похоже, проблема в другом — в мире JS вообще не принято смотреть в сторону других яп. Тесный ограниченный мирок хипстеров с leftpad’ами наперевес.

    «Мы все дыры во всех бочках заткнем jQuery и Express’ом».

    Но тогда все понятно.

    Поддержал: Ilya Svergin
  • TypeScript как будущее энтерпрайзного JavaScript. Часть 2

    Проекты бывают разные, как и задачи.
    Отстаивание с пеной у рта своих привычных галер, говорит лишь об упорности и не желании развиваться «Ведь оно и так работает, верно?».
    А вот команда, где я перевел разработку на TS через пару месяцев открыто подтвердила, что стало лучше/легче писать новый код и поддерживать старый, когда отдельные, особо упоротые модуля переписывались на TS и становилось всем лучше. Было замечено даже повышение стабильности нового функционала, т.к. компилятор вполне вылавливал мелкие нестыковки между модулями разного авторства еще даже до интеграционных тестов.

    В общем, не верите, не убедил я вас — ну и пусть. Я попытался донести свои впечатления от TS. Видимо плохо получилось, плохой писатель.

    Попробуйте и сформируйте собственные впечатления, не по моим писулькам и моим аргументам, а на реальном своем коде. А то поливать помоями абстрактного коня в вакууме все умеют.

    Я буду рад прочесть подобную статью от того кто из вас реально попробовал и ему не понравилось.

    Поддержали: Vladimir Douritski, Mykhailo Basiuk
  • TypeScript как будущее энтерпрайзного JavaScript. Часть 2

    Последняя попытка.

    Обсуждение радостей типизации вообще должно происходить в комментах к первой части. Но да ладно, сцепились тут.
    Ни на какое доверие я не давлю. Я пытаюсь донести одну простую истину — вы не заметите мега-профита на маленьком примере кода. Этого не будет. Любой кусок разумного размера который бы я тут привел, вы бы назвали простым, которому не нужны типы и интерфейсы. Вы бы сказали, что все дело в правильных именах для аргументов, функций, классов, объектов, а потом еще бы добавили контрольный «ну и doc-заголовки к методам подробные пишите».

    Это все хорошо и мне бы пришлось с вами согласится. Но лишь на том маленьком примере, если бы я поддался на правокацию.

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

    Типизация тут, это все же не сложения number + string. Нет. Это детские болячки, впрочем, за которым тоже нужен глаз, да глаз даже в коде у бывалых разработчиков.

    Вам дана возможность описывать интерфейсы и классы и использовать их как новые типы данных для той эе статической типизации. Это дает вам возможность переносить сложные структуры между модулями не заботясь о точности copy/paste «а правильно ли я ту структуру опций на over30 полей перенес для вызова?». Вы создаете новый тип данных (пусть и только на этап компиляции) и просите в явном виде компилятор «вот в том модуле, я создал монстра типа А, в других пяти модулях, мне нужно его не спутать с модулем Б и хочется быть уверенным, что я ничего не забуду». И вы не забудете — IDE вам подскажет интерфейс вашей структуры, ведь у неё есть нужные данные, она их не угадывает из глобального словаря, если через месяц вы внесете правки в эту структуру в главном модуле, компилятор (или IDE) вам четку укажут, какие связи у вас сломались, где следует посмотреть? Да, тот же результат достижим с тестами, но человек может пропустить что-то и какой-то параметр не добавить в тесты, а машина нет.

    Теперь про большие проекты.
    Когда размер проекта и длительность его разработки огромны в динамическом мире школьного JS и это не долгострой с сорванными сроками, а инкрементальное развитие большого продукта. Вы, как бы гениальны вы не были, столкнотесь с плавающими багами, несмотря на все горы юнит тестов, интеграционных, селениум-тестов. Все равно, в большой системе, как бы стройна она не была, рано или поздно заводятся демоны. Уж простите за такой образ. Команда сталкивается с проблемами в старом коде, где связь внутренних потоков данных может быть более чем сложной и понять по options что же это за options становится довольно трудно, если комментарии профукали еще в том году, так тогда не было практики code review или релиз уже демился. Так бывает, к сожалению и причин может быть много.
    Или в команде появляется новый разработчик, который может в спешке наставить кастылей и бизнесс это со скрипом продавит через code review. А потом галочка о рефакторинге этих костелей может просто затеряться в бездонном беклоге очередного спринта и...
    TS для меня в таком случае, это просто дополнительный уровень защиты — код получается строже, декларативней и понятней даже новичку. Я пишу интерфейсы к сложным структурам и классам, я пишу абстрактные классы и могу быть уверенным, что их не вызовут напрямую сломав мои задумки. Когда за вами есть автоматический контроль, то сложнее писать говнокод. Вспомните первые ощущения, когда вы впервые подключили к проету jsLint или jsHint. Вы помните, то вдохновение и ужас от того, что вас принуждают соблюдать правила и писать как минимум синтаксически не ужасный код?

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

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

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

    Поддержали: Oleksiy Antonov, Mykhailo Basiuk
  • TypeScript как будущее энтерпрайзного JavaScript. Часть 2

    О чем вы? где связь? вы вообще в своем уме? или больше 10k строк кода вы проектов не видели? Бывают приложения сложнее бложика на коленке которые пишутся вполне профессионалами своего дела. И вот профессионалы, в отличии, видимо от вас (уж простите), обычно понимают, что они люди и они и их коллеги могут ошибится — не доверяют себе и другим.

    Предлагаю закончить этот тролло-ло трёп. Мне больше нечего вам сказать.

  • TypeScript как будущее энтерпрайзного JavaScript. Часть 2

    У меня нет такого примера меньше проекта на многие десятки мегабайт чистого кода, который разрабатывался не одним поколением девов, где первые авторы уже и из компании давно ушли, а документация не поспевала за бизнесом...
    Я достаточно многословно в двух частях описал Зачем это все нужно. В первой части есть подробное объяснение. Перечитывайте до полного просветлени. Спасибо за внимание.

  • TypeScript как будущее энтерпрайзного JavaScript. Часть 2

    Впрочем, даже если договор и имеет место быть. Какая разница? У меня своя голова на плечах, мне нравится этот язык, он развивается в нужную сторону и у него уже есть место в экосистеме JS. Если по какой-то причине он не устраивает вас — это ваши сложности. Хотя ничего конкретного вы так и не высказали против языка. А игнорировать язык можно и не раздувая при этом тред в комментариях о том, что некие умные дядьки когда-то проигнорили, к тому же промазав вообще с тем, что именно они проигнорировали.
    У меня все.

  • TypeScript как будущее энтерпрайзного JavaScript. Часть 2

    Выступление было 31го марта 16го года, Angular2 разрабатывается заметно дольше и это опять же просто очередная реклама TS, но под соусом гугла.

    По прежнему не вижу конкретного прува.
    З.Ы. весь гугл перечитывать вашему запросу у меня времени нет. А изночально вы это высказали как 100% утверждение, будто в соседней вкладке у вас скан договора открыт.

    Поддержал: Ilya Svergin
  • TypeScript как будущее энтерпрайзного JavaScript. Часть 2

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

    Поддержал: Mykhailo Basiuk
  • TypeScript как будущее энтерпрайзного JavaScript. Часть 2

    а можно конкретный пруф?
    Нет, я понимаю, современными IT-гигантами рулят маркетологи, но все же. Я о таких договорах ничего не слышал, хоть и допускаю их возможное существование.

  • TypeScript как будущее энтерпрайзного JavaScript. Часть 2

    Все же вы путаете начало с концом. Наверное, вы путаете с VBScript и JScript (оба от Microsoft года 96го). Но это были совсем другие языки.
    TypeScript — это транспайлер в классический JavaScript. При этом (блин, повторяю статью) любой JavaScript код по умолчанию, является синтаксически валидным TypeScript-кодом.
    Там выше есть ссылка на первую часть статьи, я там упоминаю про это.

    Поддержали: Vladimir Douritski, Max Danylenko
  • TypeScript как будущее энтерпрайзного JavaScript. Часть 2

    JavaScript First appeared — May 23, 1995; 21 years ago
    Это из википедии... Как бы, TS это именно надстройка вокруг JS, а не наоборот. TS придумали, что бы попытаться закрыть хотя бы часть дыр в спешно придуманном JavaScript. Но не наоборот.

  • TypeScript как будущее энтерпрайзного JavaScript. Часть 2

    Если вы говорите про ES6/ES7 тогда понятно о чем вы. Но это не отменяет важности строгой типизации.

  • TypeScript как будущее энтерпрайзного JavaScript. Часть 2

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

  • TypeScript как будущее энтерпрайзного JavaScript. Часть 2

    Visual Studio Code — это отдельный продукт на базе гитхабовского редактора Atom. На разработку большого проекта, наверно не подойдет, скорее даже сдохнет в процессе переваривания, но вот как proof of concept — очень даже отлично.
    И почему вы так смело отнесли это к минусам тайпскрипту? Основываясь на моем предположении относительно рефакторинга через API компилятора?

    Поддержал: minodvesP Vasya
← Сtrl 12 Ctrl →