При статической типизации мы заранее знаем, что Леонардо всегда должен носить синюю маску, Рафаэль - красную, Микеланджело - оранжевую, а Донателло - фиолетовую. Они не могут носить чужие маски. А при динамической кто надел синюю маску - тот и Леонардо. И если Леонардо снимет синюю маску и наденет красную, то он станет Рафаэелем.
Я бы сказал: "и если Леонардо попросят драться нунчаками, он переоденет маску на оранжевую, и будет откликаться на "Микеледжело".
Идет сравнение языков программирования с динамической типизацией и со строгой.
На самом деле автор картинки не знает программирование, поэтому противопоставлял бы динамическую типизацию статической, а строгую слабой.
И есть языки, которые одновременно являются языками со строгой динамической типизацией, например python и ruby.
Новичкам обычно нравятся языки со слабой динамической типизацией: они прощают больше ошибок. Но работать с ними на больших проектах - самоубийство.
VBA тоже объект для шуток, но если не он, то на чём писать макросы в экселе?
ок.
тем что данным языком пытаются решать задачи, для которых он не предназначен. а решают их этим языком из-за общего низкого уровня людей которые этим языком владеют. а еще с него очень сложно перейти на что-то нормальное.
порог входа очень низкий, и часто путь пхп-шника начинается именно с ПХП. Соответственно на другой язык ему перейти сложно. фундаментальных знаний нет, в результате появляется армия людей которые пытаются что-то огромное сделать на пхп.
а по факту чтобы сделать большой проект на пхп и при этом кодовая база не превратилась в помойку - нужно обладать афигительным скилом и знать еще кучу языков и подходов, чего нету очень часто.
чушь. сам знаю быдлокодеров на пхп, которые взялись писать биржу, но то, что Вы расписали - лютое дерьмо.
Зачем в других языках конкатенацию сделали через плюс?
Аналогия с математикой же.
Почему в паскале мы вынуждены писать begin и end вместо {}.
Близость к человеческому английскому же
Зачем вообще нам нужны скобки, когда можно как в питоне ставить отступы.
Разработчик-пользователь волен оформлять код так, как его удобно читать, а не так, как это решил разработчик языка.
Почему бы и нет?
Потому что это не имеет смысла в 2к17. Это просто окаменелый кусочек кала древнего животного.
Это не те вопросы которые должны интересовать программиста.
Плох тот программист, который не умеет в теорию компиляторов и не задается вопросами по поводу используемых инструментов и их эволюции. Но...это так похоже на веб-разработчиков, которые слепо следуют хайпу (=
З.ы. кстати сейчас тенденция интересная когда делаются дополнительные инструменты чтобы писать некий код который потом трансформируется уже в нужный код.
Назовите мне язык где разработчик волен делать вообще все что хочется. Нет таких.
Градации вы не признаете?) Либо всё, либо ничего!
чтобы быть хорошим водителем не обязательно знать досконально работу двигателя.
Наверное просто так любые автошколы включают в программу базовое изучение устройства авто) Вы слыхали такое понятие, как "текущие абстракции"?
Удовлетворительных программистов большинство, это хоть и печально, но массовая разработка не требует особых навыков и хорошего качества ПО на выходе, поэтому спрос все равно есть. Но от этого хорошими программистами они не становятся.
сейчас тенденция интересная когда делаются дополнительные инструменты чтобы писать некий код который потом трансформируется уже в нужный код.
Не от хорошей жизни, увы.
Это еще с Perl идет. Там это признак скалярной переменной(если не ошибаюсь), а знак @ обозначает массив. Если ошибся, то владеющие Perl поправят.
Строгая типизация: когда переменной указывается тип int например. И кроме чисел в нее ничего нельзя будет поместить. Это упрощает компиляцию (сборщик не отслеживает что происходит с переменной на протяжении кода, по тому что она наверняка будет int)
Динамическая: как в php. Там файл с кодом интерпретируется каждый раз и не нужно указывать тип переменной. Выводишь содержимое переменной или проводишь арифметические функции - интерпретатор сам разберется что нужно делать.
сабж постав том, что часть программистов готовы спорить на тему почему определенная типизация лучше.
А часть программистов понимает что ЯП это инструмент а не сама цель, и занимается спокойно своими делами не вступая в холивар.
Лодку мне. А вообще там может быть написан любой бред
Автор, открой консоль в браузере (F12, далее выбрать вкладку консоли) и введи то, что я написал ранее, только без многоточия. Сразу поймешь шутку)
Динамическая - ты даешь компилятору переменную и он спм определяет число это, строка, или что-то другое.
Строгая - ты даешь компилятору, к примеру, число 5 и говоришь умножь мне его на строку "ввв", а он тебе говорит: "ты ебнулся? Как я тебе сисло на строку умножу?!"
Слабая - даешь ты компилятору число 5 и говоришь умножь мне его на строку "ввв", а он тебе говорит: "ладно, щас что-нибудь придумаю"
Бывают ЯП со строгой статической типизацией, слабой динамической... Одновременно ЯП со статической и динамической типизацией не бывают. Хотя это не точно, есть некоторые нюансы. Тема на самом деле обширная довольно.
Но ведь в питоне строгая типизация, но он может умножить строку на число))
И он динамический, но всякие PyPy, Jyton используют статическую типизацию.
"Не всё так однозначно" (с)
может умножить строку на число
Просто синтаксический сахар, попробуй перемножить число и словарь)
Нет. Статическая и строгая типизация - это как красное и сладкое яблоко. Совершенно независимые характеристики. А то, что ты назвал "строгой" типизацией - это статическая типизация. Вот тут подробнее можно почитать https://habrahabr.ru/post/161205/
очень грубое объяснение такое
динамическая типизация - это когда одну хуйню, например, складываешь с ебаниной и получается еще другая либо хуйня, либо ебанина, но это допустимо в языке и в рамках алгоритма нужно
статическая типизация - это когда можно сложить хуйню с хуйней, но нельзя с ебаниной.
статическая типизация позволяет писать более понятный код не заботясь о том что ты складываешь. динамиеская позволяет писать более интересный код, но с вероятностью получить неведомую хрень если не позаботиться о проверках типов
Да что тут понимать,динамическая хуже строгой и прогер за такое заявление пошел ломать ебало клоуну
Коротко динамическая - статическая определяет кто решает аакого типа переменная (человек или компилятор) строгая - не строгая определяет можно ли выполнять операции над разными типами данных (например нестрогая позволит умножить строку на число. Строгая - нет) но есть нюансы.
Внезапно https://ru.wikipedia.org/wiki/Common_Lisp язык с сильной(правильно именно так, а не строгая) динамической типизацией
Лодку сам себе подам – клоун превращается в то, что ты боишься больше всего
Есть языки прог. со нестрогой ( динамической ) типизацией ( JS / PHP ) и строгой ( C++, C# etc ). Разные переменные занимают разное количество памяти. В случае нестрогих языков все переменные объявляются с помощью одного ключевого слова. А невидимые магические механизмы сами определяют тип и занимают память. В случае со строгой необходимо явно указывать тип, в некоторых случаях явно выделять память.
К примеру код на JS и аналогичный на С++ ( плюсы по памяти )
// JS
var belo4ka; // объявим переменную
belo4ka = "masha"; // пихаем строку
belo4ka = ["devo4ka", "mal4kig", "genderfluid", "herpoimi4to"]; // пихаем массив
belo4ka = !!("masha raznostoronnia li4noct'"); // в результате операции получим логическое значение
belo4ka = 69; // и число.
С++
// в плюсах нет строк, но есть массив "символов".
char belo4ka[] = "masha"; // мы объявили массив символов и сразу его инициализировали. автоматически занялась память на 5(+1) символов
// массив строк в плюсах уже будет двумерным массивом символов. и нам нужно либо изначально знать длину всех данных, либо динамически выделать память поскольку язык ( невидимые механизмы ) не будет делать эту работу за нас во время выполнения кода
char *belo4ka_2[10] = {"devo4ka","mal4kig","genderfluid", "herpoimi4to"}; // массив указателей на 4 области памяти размером под 10 символов и не более. в рабочем коде память будет выделяться динамически, а это еще больше кода.
bool belo4ka_3 = !!"masha raznostoronnia li4noct'";
int belo4ka_4 = 69; // исключительно целые числа.
сначала написал [4][10] но потом чего-то передумал. а вообще да, даже университетская программа плюсов уже выветрилась, знаю (
В плюсах можно и так:
void foo(void* v) {
string i = *(string*) v;
//что реально будет в s - одному богу известно
}
Известны 10 преимуществ Паскаля перед Си:) Я приведу только одно, но самое важное. На Си вы можете написать: for(;P("\n").R--;P("\ "))for(e=0x3DC;e--;P("_ "+(*u++/8)%2))P("| "+ (*u/4)%2); На Паскале Вы НЕ МОЖЕТЕ такого написать.
Очень-очень нескоро. Переписывать бесконечное количество всевозможных плагинов на работающих сайтах - мм, прямо с нетерпением жду этого.










IT-юмор
7.6K поста53.3K подписчик
Правила сообщества
Не публикуем посты:
1) с большим количеством мата
2) с просьбами о помощи
3) не относящиеся к IT-юмору