• В чем преимущества TS?

    Aetae
    @Aetae Куратор тега TypeScript
    Тлен
    А ещё динамическая типизация сильно экономит время на написание кода - это очень нехилая оптимизация рабочего процесса.

    Это утверждение верно относительно языков с изначально статической типизацией против языков с динамической, но не верно для TS как такового. Если не использовать маньячные правила типа обязательного ручного проставления типов, то в 80% случаев TS сам прекрасно выводит тип, без лишних телодвижений.
    Огромное ускорение от типизированого автокомплита в IDE и отсутствия возможности, например, случайно кинуть в функцию объект вместо строки, с лихвой перекрывает оставшиеся 20%.
    Редкие случаи когда TS писал мне "какую-то хрень" и отказывался что-то делать, заставляя сидеть и разбираться - на поверку оказывались сильно неочевидными косяками в моём коде, которые могли бы привести к реальным багам.
    Ответ написан
    Комментировать
  • О каких IT специалистах говорят, когда речь идет о дефиците кадров?

    php666
    @php666
    PHP-макака
    Откуда миф о нехватке кадров?

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

    Начнём с последних - реклама курсов. Создаются курсы по IT с целью заработать деньги, а их реклама говорит, что ну НЕ ХВАТАЕТ айтишников, ну нет и всё! А зарплаты - сотка с порога.
    Хотя почему их не хватает, кто это сказал, где статистика, графики, отчёты? Этих отчетов НИКТО и НИКОГДА не видел.
    Касательно упомянутого автором веба: я начинал свой карьерный путь в начала 2003 года. Тогда уже были форумы по программированию, люди обсуждали, как заставить javascript работать в IE и NetscapeNavigator. Это было 20 лет назад почти. Как думаешь, за 20 лет сколько людей вкатилось в сферу программирования? Десятки тысяч стали полноценными специалистами.

    Теперь относительно работодателей. У айтишников с незапамятных времен был такой фетиш - "да ты не знаешь бибилотеку Н? - Ну ты и лох" - образно говоря. Чем больше знал айтишник - тем он был круче, чем другие. Это был своего рода выпендрёж одних айтишников перед другими.
    Но это было давно, опять же, лет 20 назад. За последние 20 лет индустрия рванула вперед настолько, что каждая технология, каждый ЯП оброс массой технологий-сателлитов. Для работы фронта нужно знание JS и каких-то там библиотек. Для работы с PHP требуют в вакансиях знания как минимум ТРЁХ фреймворков, не говоря о сопутствующих библиотеках, знания ОС unix/linux, DevOps, СУБД/высокие нагрузки, кэши-редисы, умение это все грамотно применять и т.д. Работодатели видят, что айтишник - это такой весьма покладистый тип личности, которого хлебом не корми, а дай что-нибудь поучить в свободное от работы время (ну а зачем зашуганному ботанику свободное время, пусть сидит дома фреймворки изучает). Вот работодатели и начали задирать планку и жаловаться, что "специалистов не хватает".
    Да, сумасшедших гениев, кто знает целые вереницы технологий, намного меньше, чем обычных ребят, которые исполняют свою зону ответственности. А поскольку работодатели хотят сэкономить, то ищут этого фантомного чудо-программиста, который должен, по их мнению, работать за три отдела. Не находят и жалуются, что "специалистов не хватает".

    Теперь последнее. На подобный вопрос, как ты видишь, все отвечают примерно так - "есть нехватка квалифицированных кадров". При этом НИКТО не даст ответ, чем квалифицированный кадр отличается от неквалифицированного (и, опять же - КТО сказал, что есть нехватка?).

    Вклад в этот миф о нехватке спецов вносят сами разработчики. Сидел такой Петя, кодил 5 лет уткнувшись в монитор, потом его руководитель увольняется и, о чудо, Петя становится НАЧАЛЬНИКОМ отдела аж из пяти программистов. И вместо того, что бы делать свою работу хорошо, у Пети формируется синдром вахтера и Петя начинает задавать весьма заковыристые задачки на собеседовании, заставлять кандидата писать в режиме реального времени код, дает ему тестовое задание на 2 недели. А когда кандидаты сливаются, начальник-Петя, решает, он самый умный, а "спецов не хватает". Хотя проблема не в спецах, а в идиоте-Пете, который самоутверждается через свою должность главного формошлепа.

    И что самое главное. Кому в РФ нужны айтишники? Бизнесу. В первую очередь.
    Бизнесы развиваются в ногу со временем.
    Взять в пример бизнесы 2010 года - что они делали? Свои веб-сайты, пилили какие-то свои наколенчатые решения.
    Что делают бизнесы 2022 года? Идут на ВБ и Авито, покупают готовые продукты.
    Время расставляет всё по местам, происходит оптимизация.
    Что бы твою продукцию покупали больше не надо держать ИТ-штат для поддержки сайта, для этого есть ВБ.
    А с учетом последних событий бизнесы будут неминуемо сокращать расходы.

    Айтишники были в последние годы слишком дорогим удовольствием для бизнесов, айтишные аппетиты реально стали чем-то запредельно наглым, когда видишь, что Маша 25 лет с 2 годами опыта хочет 250 000 рублей.
    Бизнесы в нынешних условиях неминуемо будут сокращать траты и условные Маши, которые вчера хотели 250 000 за JavaScript скоро будут работать за 50, тк таких Машек с каждым годом всё больше и больше.
    Ответ написан
    5 комментариев
  • Как разбить строку?

    vladgba
    @vladgba
    (。◕‿‿◕。)
    for(i in msg) console.log("'" + i + "': '" + msg[i] + "';")
    Ответ написан
    1 комментарий
  • Может кто-нибудь дать реальную задачу на которой можно применить ООП?

    HemulGM
    @HemulGM
    Delphi Developer, сис. админ
    Сколько фигни понаписали, а человек просто просил реальный пример для применения ООП.

    ООП помогает строить приложения так, как человеку удобнее мыслить. Наш мир окружают объекты. И в программировании мы описываем эти объекты. Например: человек - объект. Человека мы можем описать не целиком, если нам нужен человек только лишь как клиент. А для этого нам важен его идентификатор, имя и прочие данные.
    После чего мы используем списки таких объектов для манипуляции данных. Список клиентов - список объектов.

    Объекты могут совершать действия, или над объектами могут совершатся действия. Т.е. клиент сам может создавать заявку или этим может заниматься менеджер.

    Что то типа Client.CreateOrder (клиент создает заказ) или Orders.CreateOrder(Client) (менеджер заявок создает новую для такого-то клиента).
    Всё достаточно просто.

    Тебе достаточно придумать любую задачу и просто решить её с помощью объектов.
    Например, музыкальный плеер. Пусть трек будет представлять объект, содержащий путь к файлу, название, продолжительность и так далее. И список треков. Дальше сам решай кто чем будет управлять. Либо ты работаешь над списком объектов, либо каждый объект может сам делать что нужно. Но для музыкального плеера удобнее, когда треки лишь содержат данные (DTO). Т.е. имеем список треков и манипулируем объектами (добавляем, редактируем, удаляем и т.д.)

    Это в общих чертах. После чего добавляем наследование. Например, есть базовый класс - трек, но он может быть как ссылка на веб-ресурс, а может быть как файл. Т.е. мы создаем общий абстрактный класс для хранения любых треков в списке (как файловых, так и веб)

    TAudio = class abstract
    private
      FId: string;
    protected
      function GetTime: TTime;
      function GetName: string;
    public
      property Id: string read Fid write FId;  //Пусть тут будет полное имя файла или ссылка на веб
      property Time: TTime read GetTime;  //Время
      property Name: string read GetName;  //И имя
    end;

    После чего мы можем от него наследовать два класса (для файлов и для веб)
    TAudioFile = class(TAudio)
    protected
      function GetTime: TTime; override;
      function GetName: string; override;
    end;
    
    TAudioUrl = class(TAudio)
    protected
      function GetTime: TTime; override;
      function GetName: string; override;
    end;


    И хранить оба типа объектов в одном списке.
    TAudioList = TObjectList<TAudio>;

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

    Используя список мы можем
    var AudioList := TAudioList.Create;
    
    var Audio: TAudio := TAudioFile.Create('C:\Music\Track1.mp3');
    AudioList.Add(Audio);  // Добавлять аудио файлы
    
    Audio := TAudioUrl.Create('webmusic.ru/tracks/track1.mp3');
    AudioList.Add(Audio);  // Добавлять веб аудио 
    
    AudioList.Delete(0); // Удалять элементы
    
    // менять местами, сортировать, редактировать и т.д.


    Теперь у нас общий плейлист для тех и других видов аудио и мы можем скармливать их плееру для воспроизведения.

    Player.Play(AudioList[0].Id);

    А дальше мы можем усложнять и усложнять, добавляя новые возможности. Например, завести интерфейс и принимать аудио файлы из плагинов. Или использовать ОРМ для хранения плейлистов в базе данных. Мы можем отличать один вид от другого при переборе списка и обрабатывать уникально для некоторых.
    Ответ написан
    4 комментария
  • Как заранее знать уровень подготовки спрашивающего?

    xez
    @xez
    TL Junior Roo
    Как там говорил кто-то из великих "Если вы что-то не можете объяснить 6-летнему ребёнку, вы сами этого не понимаете."
    Ну и по вопросу часто понятно уровень спрашивающего.
    Ответ написан
    Комментировать