Сообщество - IT-юмор
IT-юмор
1 908 постов 34 192 подписчика
231

Поймут не только программисты (надеюсь)

Вчера на pikabu в горячее влетела картинка с шуткой про статическую\динамическую

типизацию в программировании. Пост под названием «Программисты поймут».

Поймут не только программисты (надеюсь) Программист, Программирование, Типизация, Опровержение, Длиннопост, Оно, C++, Python

Дисклеймер: если Вы изучаете программирование и начали читать этот пост с целью просвящения, а не из-за праздного любопытства - не стоит опираться на данный текст! Для подобных целей в конце поста приведены две подробные и более точные статьи.

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

Там же, в комментариях было дано пояснение от пользователя @9poIIIa.


Вскоре под этим комментарием развернулось бурное обсуждение, в котором многие утверждали, что этот пользователь допустил ту же самую ошибку, что и в посте: смешал между собой совершенно не связанные друг с другом понятия: статическую\динамическую типизацию и строгую\не строгую (она же — сильная и слабая типизации).


Эти пользователи, в свою очередь, пытались дать свои объяснения. Но они были либо слишком специализированными (их невозможно понять без предварительной подготовки), либо излишне абстрактными и упрощенными, вроде «я складываю крокодила и велосипед — это не строгая типизация».


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



СПОЙЛЕР для тех, кому лень читать весь пост:

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

А пользователи, поспорившие с @9poIIIa и указавшие ему на неточность его объяснения — абсолютно правы.


Если говорить очень грубо, то статическая\динамическая типизация — определяет то, какие данные, в теории, могут хранить переменные.

А понятие строгой\не строгой (сильной\слабой) типизации — определяет то, как две различные переменные могут взаимодействовать друг с другом.

Т.е. это два совершенно разных понятия, которые нельзя смешивать.



Теперь, непосредственно, к объяснению:


Прежде чем понять разницу между типизациями, необходимо понять что такое «переменная».


В большинстве языков программирования, «переменная» — это небольшая ячейка памяти, предназначенная для хранения в себе какой-либо информации: чисел, символов, логических значений (истина\ложь) и многого другого (современные языки программирования даже позволяют создавать собственные типы данных).


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

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



Отлично. Мы на шаг приблизились к пониманию понятия «типизация».

Давайте теперь разберем, что такое «тип» в языке программирования:

в типизированных языках программирования тип переменной определяет то, какие значения эта переменная может в себе хранить. Например, в таком языке программирования как c++ - целочисленная переменная (int) может хранить только целые числа (-1, 0, 2, 3 и т.д.). А переменная типа «символ» (char) — только символы английского алфавита ('a', 'z', и т.д.).


Для дальнейших объяснений я использую два языка программирования: c++ (статическая и не строгая типизация) и python (динамическая и строгая).



Статическая\Динамическая типизация:

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


C++:

int a = 2;

«int» — это обозначение типа переменной. В данном случае — тип «целое число».

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

Знак «=» — говорит нам о том, что переменная «a» после своего созднаия примет значение, стоящее справа от этого знака — в данном случае — это «2».


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

int a = 2.3; // Такой код выдаст ошибку

Это язык со Статической тпизацией.



Python:

a = 2

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


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

a = 2.3 # Если написать этот код после «a = 2», он сработает. Значение a изменится, а Python самостоятельно определит новый тип переменной «a».

Это язык с Динамической типизацией.



Строгая\Не строгая типизация

Определяет то, может ли язык неявно преобразовать данные различных типов.


С++:

int a = 2;
char b = 'L';
int c = a + b;

Да, да, вам не показалось. Мы сложили число и символ (!) и получили новое число.

Как это работает? C++ неявно преобразовал символ 'L' в число — а именно в номер, который соответствует этому символу в таблице кодировок ASCII. Номер, соответствующий символу 'L' в этой таблице — 76. Таким образом, в «c» у нас окажется значение 2+76=78


С++ - это язык с Не строгой типизацией.


Python:

a = 2
b = 'L'
c = a + b # Здесь будет ошибка

Python не позволяет нам складывать такие две разные сущности как «целое число» и «символ».


Python - язык со строгой типизацией.



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



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


Но шутка не удалась из-за допущенной неточности.



Бонус от меня лично:

Поймут не только программисты (надеюсь) Программист, Программирование, Типизация, Опровержение, Длиннопост, Оно, C++, Python

P.S. несмотря на мое заявление в самом начале поста, я все-же использовал ряд небольших упрощений при объяснении различных понятий в программировании (просто, чтобы не перегружать читателей ненужной информацией). Надеюсь, сообщество программистов простит мне неточности.


Источники:

Статическая и динамическая типизация

Ликбез по типизации в языках программирования

Показать полностью 1
364

Как я интернет улучшал

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

Как я интернет улучшал 3g модем, Интернет, Сериалы, Чай, Кот, Длиннопост

Опять просела скорость! Поставил я чай на стол, спустил кошку на пол, вылез из пледа и пошел поправлять модем...К слову модем у меня стоит на подоконнике и подключен через USB удлинитель с таким импровизированным "отражателем"(если ошибся на счет названия - исправьте)

Как я интернет улучшал 3g модем, Интернет, Сериалы, Чай, Кот, Длиннопост

На протяжении 10-ти минут я пытался нормально поставить модем...Но то связи нет,то скорость проседает, в итоге я психанул и полез в телефон для того чтобы найти как решить мою проблему, после недолго поиска я нашел на ютубе видео с названием на подобии "усиление сигнала 3G модема с помощью дуршлага" ,посидев и подумав пару минут я пошел на кухню, из подходящего по форме(полусфера) и материалу(металл) я сразу увидев казан. Поняв что кроме казана есть только пару сковородок, которыми пользуюсь почти каждый день, было решено использовать казан! Немного потрудившись я собрал этот чудо агрегат!

Как я интернет улучшал 3g модем, Интернет, Сериалы, Чай, Кот, Длиннопост

Собрал я его из сломанной трехногой табуретки, казанка, куска медной проволоки, USB удлинителя и скотча(синюю изоленту не нашел)

Установив эту конструкцию на такую же трехногую табуретку:

Как я интернет улучшал 3g модем, Интернет, Сериалы, Чай, Кот, Длиннопост

Сериал наконец таки начал нормально грузится!

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

Всем быстрого интернета и теплого чая!

Показать полностью 3
204

Не информативно! Вот теперь достаточно.

Из рабочего чата.

[13:12:33] Аналитик: кнопка еще кривая на выборе Уровня окато на dev-server

[13:12:57] Руководитель проекта: не информативно.

[13:17:48] Аналитик: не отображается полностью. обрезанная

[13:18:12] Аналитик: иудейская

215

Дуров пообещал миллионы долларов сервисам обхода блокировки Telegram

Основатель Telegram Павел Дуров сообщил, что будет выплачивать из своих личных средств "миллионы долларов" на поддержку прокси-сервисов и VPN.


"В рамках Цифрового Сопротивления - децентрализованного движения в защиту цифровых свобод и прогресса - я начал выплачивать биткоин-гранты администраторам proxy и VPN. В течение этого года буду рад пожертвовать миллионы долларов личных средств на эти цели", - написал Дуров на своей странице "ВКонтакте".

По словам Дурова, российский рынок важен ему по личным соображениям
Дуров пообещал миллионы долларов сервисам обхода блокировки Telegram Telegram, Дуров, Роскомнадзор, Деньги, Новости, Блокировка telegram, Компьютер
"Хотя российский рынок не составляет существенной доли пользовательской базы Telegram, он важен нам по личным соображениям", - добавил Дуров, призвав остальных "присоединяться и участвовать - настройкой прокси/vpn серверов или их финансированием".

16 апреля Роскомнадзор начал блокировку Telegram на территории России. Однако у многих пользователей мессенджер продолжил работать даже без сервисов обхода блокировок - VPN (виртуальных частных сетей) и прокси (промежуточных серверов).


Как ранее пояснял Павел Дуров, мессенджер использует встроенные возможности обхода блокировок. Речь идет, например, о переносе трафика на сторонние облачные сервисы Amazon и Google. Роскомнадзор, в свою очередь, обещает продолжить блокировку всех ресурсов, связанных с мессенджером.


Владельцы сервисов обхода блокировки стали получать уведомления от Роскомнадзора об угрозе блокировки их ресурсов в связи с "призывами к массовым беспорядкам и осуществлению экстремистской деятельности". Ведомство начало массово добавлять в "черный список" IP-адреса Amazon и Google. Основанием стало постановление Генпрокуратуры от 4 декабря 2015 года - его невозможно найти в открытом доступе, хотя оно использовалось для блокировки сотен ресурсов в интернете.


К вечеру 17 апреля надзорное ведомство заблокировало более 16 миллионов IP-адресов Amazon и Google, согласно данным сайта 2018.schors.spb.ru, на котором отслеживаются изменения в "черном списке" Роскомнадзора. В соцсетях появлялись сообщения о проблемах в работе различных сервисов и сайтов, использующих ресурсы этих компаний.


Telegram был заблокирован в России по решению Таганского районного суда от 13 апреля из-за отказа администрации передать ФСБ ключи шифрования переписки пользователей.

https://www.bbc.com/russian/news-43798209
Показать полностью
132

Ростелеком

Ростелеком похоже берет пример с ПР. Сегодня отключил "Управление просмотром" за ненадобностью. Вот скрин. Понимаю что ошибка но все же, когда их программисты допилят приложение для Андроид?  

Ростелеком Пост, Юмор
204

Не делать ничего.

Начал изучать FreeBSD и решил поставить у себя на работе вместо WinServer 2008. В общем настраивал я его очень долго и муторно в связи с тем, что я начал с нуля и ничего не знал. В итоге все работает как часы, и заключительным этапом моей работы является настройка резервного копирования. Так вот, что предлагается в мануале на официальном сайте среди перечня программ для резервного копирования

Не делать ничего. Freebsd, Операционная система, IT юмор, IT, Текст

Ребята явно с юмором

Мои подписки
Подписывайтесь на интересные вам теги, сообщества,
пользователей — и читайте персональное «Горячее».
Чтобы добавить подписку, нужно авторизоваться.
Отличная работа, все прочитано!