Подробнее
web фронтенд я приму любой ответ сервера, обработаю любой объект, любой структуры, отсутствует поле? - мне похуй, в крайнем случае будет null или undefined, пользователь даже не заметит мобильный фронтенд можешь плмз добавить одно ненужное поле в бд, а то у меня объемкт не матчится и примложение крашится на старте(((9
it-юмор,geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор,программирование,js,swift,web
Еще на тему
я нихуя не понимат про свифт
а на деле swift простой
и ноет на джое, вместо того, чтобы порыться на стековерфлоу
сидишь вдупляешь в метод который принимает хуй знает что
рулит в ногу себе
но даже она не может вывести содержимое переменных data, params, options и context, если на всём стеке они ни разу не были подписаны.
ах да, иногда может. и там сука тип mixed.
сидишь, штаны протираешь часами за таким дебагом. бесполезно проживаешь жизнь.
Сочувствую чувак.
Из минусов: будешь делать онлайн-казино, мач3, гиперкэжуал и прочие игры для даунов.
А ещё работать придется с "интересными личностями" - там такие вообще все, от тестировщиков, до заказчиков.
Через пару лет либо познаешь дзен либо свалишь из гейдева
Не не, вы не поняли, всё так и планировалось!
я в последнее время больше по c++/Qt/qml
Просто используй или надтип (Object, Any, etc), или аналог void* вообще везде, и будет тебе динамическая типизация. И это даже будет быстро. Но риск получить пизды за такой код, если его кто-то адекватный увидит.
Смотри: в js можно создавать новый "тип" вообще нигде никак не описывая его структуру, а прямо на месте написав что-то вроде {"a": 1, "b": 2}
В более строго типизированных языках действительно есть всякие Object, Any и т.п. Но для того чтобы в них положить произвольный пользовательский тип, этот тип обычно должен удовлетворять некоторым критериям, как то: должен быть явно описан как структура/класс, предоставлять метод хеширования. или например пару методов сериализации/десериализации.
Т.е. в строготипизированных языках ты получаешь как бы динамическую типизацию не за счет синтаксиса самого языка, а за счет складывания всего в хитрый union, который писать вручную надо. А вариант с void* не уверен что это можно в принципе сравнивать с динамической типизацией. С точки зрения теории это вообще звери из разных вселенных: абстрактная теория типов не очень заботится о том, что должна помещаться в реальную физическую память
При желании легко делается через любой map, где ключ - имя свойства, а значение - значение. Тащемта, в нутрях нетипизированных языков оно так и сделано. И даже обращаться к свойствам часто можно через нотацию мапов.
Вопрос только, нахуя.
И да, это чуть перпендикулярно статике/динамике. В некоторых языках со статик типизацией можно создавать типы на лету, но они остаются статическими.
https://m.youtube.com/watch?v=ssxBGn4_Ijs
Уж в плане отсутствующих полей, со swift все в порядке.
А вот время компиляции - говно, да и динамическое выделение памяти - тоже (ибо медленно).
*последний раз 3 года назад его трогал
То, что в результате получится совсем не то, что нужно, а случайная непредсказуемая хуйня, программистов js не ебёт. Не упало, ошибку не выдало, значит и заебись.
А то, что оно исполнило какую-то хуйню на логическом уровне, и от этого пользователи в ахуе и не могут что-то сделать - ну и что, да? Главное же, что не упало.
Погроммисты, блядь.
понятно что для профи, особенно если код пишется не в одиночку, это неприемлемо.
на практике мне пришлось летом изучить js чтобы полноценно исполнять dba-шные функции в таблицах на "zero-code/low-code" (я столько кода как за последние 3 месяца, не писал в предыдущие 15 лет работы в сфере IT) - поскольку уже заранее предупрежден мемами с js sort и "5"+2="52", таких ситуаций практически не случалось, да и математики в итоге применяется совсем мизер. тем более пишется в интерфейсе с оберткой typescript, он всегда гавкает если что-то не так, иногда даже когда все так.
Программисты JS предлагают сожрать говно со стеклом, насладиться тем, что всё получилось, заплатить, и похуй на кровавый понос и прочие последствия поедания.
Неопределенное поведение - это наихудший результат работы любой программы. Хуже, чем полная неработоспособность и отказ.
Но, тем не менее, проверять структурную целосность пришедших данных нужно всегда.
Как, кстати, и критические ключевые моменты.
При статической типизации структурная целостность проверяется автоматически всегда, без усилий. И если пришло что-то не то, а это не такая и редкость, то выдаётся ошибка.
Жаваскрипт не проверяет нихуя. Хуже того, в данном посте это преподносится как преимущество, хотя это скорее пиздец.
Но читать ты не умеешь.
Может быть, годам к 10-15 опыта, к тебе придёт понимание. А может, и нет, но это уже не моя, а твоя проблема.
Которое такоеже раковое говно как и js
Как я понял, подразумевается что в статической типизации такое действие происходит "автоматически" ввиду того что так работает сам язык. Т.е. если скажем возращающая сторона каким-то чудом перепутала порядок колонок в "наименование" - "количество", то попытка спарсить "%ItemName%" в int-поле вывалит ошибку, в то время как js вполне может пропустить это и записать в таблицу на отображение без задней мысли.
Ну либо более вероятный пример -- опечатался в поле, которое позволяет хранить null. В том же C# такое не пропустит компилятор, а вот js ругнется только в рантайме и то не факт. Собственно это и есть основное преимущество строго типизированого статического языка -- немало багов отсекается на этапе компиляции.
Вот только я очень сомневаюсь что тот же С# или его аналог можно засунуть в браузер:
- уже 100500 сайтов написоно под использование js, который вытеснил даже flash
- всякие UI элементы аля "button" в каждом браузере долгое время были реализованы по своему, и я слабо представляю как с этим богатством можно работать не на динамическом языке
- "скрипт" в целом менее платформо зависимый, нежели нативный код, и в теории можно предусмотреть его работу даже на утюге
- все это не избавляет от того факта что писать на js больно
гугол пилит Dart как убийцу жиеса со статической типизацией, но вроде пока что нет вакансий Dart разработчиков
Ух, уточняй что речь про фронтенд сайтов, а то я аж призавис. Про "изобрести" я не того скила девелопер (тем более фронтэнда) чтобы сказать насколько это (не)реально, но с уверенностью могу сказать что даже если каких-то чудом придумают супер-язык для фронтенда, браузеры еще очень долго будут поддерживать js, ибо переписывать уже работающие сайты нахуй никому не упало.
То, что умные люди, охуевая с этого пиздеца, поставили костыли к js, которые позволяют лучше работать с типами, только подтверждают то, что динамика - полная хуета.
Kukareku kukarek = new Kukareku()
kokoko.setKukarek(kukarek);
function sitDown(bar: Spike[] | Dick[]): Void {
….
}
И какая проблема с наследованием?
Я уже не говорю про кретинизм "мы не будем переделывать кривую иерархию, а сделаем обжект и проверку на тип" - так сделать может только или джун, если его не отпиздят палкой сеньоры, или команда, перешедшая из js-подобной хуеты, нагородившая кривую иерархию, и решившая забить по привычке хуй на типы.
Никогда за 20 лет опыта мне не приходилось использовать множественное наследование, и никогда я не делал и не видел, чтобы всерьёз делали проверку типов в рантайме вместо переделки иерархии, если она кривая.
Спасибо, я теперь знаю как называется моя должность "по факту"
В опусе выше я говорю про смешивание сущностей.
Кстати, как там поживает типизация в похапе и перле?
Дотнет неплох, но я не следил.
Все языки поверх этих ВМ(дотнет, джава).
Есть ещё всяческоя экзотика типа GoLang, и ещё нескольких.
Все эти технологии объединяет быстрая скорость и удобство программирования, и быстрая работа. И статическая типизация.
А вот удобства как раз нет. В Джаве обычная передача метода как параметра функции - делается с катастрофическими изъебами. В решетке для этого "выдумали" делегаты, но все равно корявенько. Рефлекшен вообще один сплошной хтонический пиздец.
Собственно, твои познания про её роль сейчас, примерно того же времени.
Да и знание про "типовое веб-приложение" тоже.
На чём можно и остановиться, поскольку пересказывать тебе события последних двух десятков лет у меня желание отрицательное.
Я, разумеется, не настаиваю на пересказе, но мне непонятно - зачем ты тогда вообще писал свой коммент? Типа, я должен был проникнуться с таинственности и недосказанности? Но это больше выглядит как унылый слив из-за отсутствия фактических аргументов. Вместо Джавы ты мог в свой коммент поставить что угодно, хоть фортран-77 и при этом ничего бы не изменилось.
doSomething(MyClass::myMethod)
Это вот по-твоему ахуенно сложно?
Не в курсе с чего начинался оригинальный asp, но на .net все это стартовало с триждыблядских Forms, которые по ходу создавали под веществами, ибо иного объяснения "гениальной" идеи сделать из web недодесктоп у меня нет. И MVC, при всем своем более высоком уровне вхождения, это мать его спасение платформы (особенно с Razor в разметке). Правда все равно это скатилось в WebAPI.
Ну и как бы c# далеко от java не ушел: все тот же энтерпрайз, и "прокладкой" между фронтэндом и БД это сложно назвать. Половина страниц действительно может быть тупо Load().Map(), а вот остальная часть -- ебаный пиздец из костылей и багов, ради которого C# и выбрали.
p.s. про делегаты вообще не понял -- что с ними не так? При учете что есть замыкание, сложение/вычитание, лямды и их описание, in/out, и сахар в виде event. А в новой спецификации разрешили говнокодить вложенный метод внутри другого метода, что очень неплохо сочетается с замыканием.
но нет, в динамической типизации оно будет втихаря корраптить данные, пока вы это случайно не обнаружите через полгода.
особенно прекрасно живёт сравнение переменных разных типов.
одно лишь существование этого в официальной документации показывает, что динамическая типизация не имеет права на жизнь
https://www.php.net/manual/ru/types.comparisons.php