From d9ba6d0eee96491e2d651a819b81c44f1fa51c7e Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Tue, 6 May 2025 16:05:50 +0300 Subject: [PATCH] =?utf8?q?=D0=95=D1=89=D1=91=20=D0=BE=D0=B4=D0=B8=D0=BD=20?= =?utf8?q?=D1=87=D0=B5=D0=BB=D0=BE=D0=B2=D0=B5=D0=BA=20=D0=BF=D0=B5=D1=80?= =?utf8?q?=D0=B5=D1=85=D0=BE=D0=B4=D0=B8=D1=82=20=D0=B8=D0=B7=20Python=20?= =?utf8?q?=D0=B2=20Go?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit https://habr.com/ru/articles/907360/ Что-то меня последнее время прям бомбит от начинающих "программистов". Этот вот написал, что работает уже третий (!) год. Почему язык не может просто начать выполнять файл с первой строки? То есть, как минимум, разницу между компилируемыми и интерпретируемыми даже близко не представляет? За три года то работы в ИТ? В Python пишешь a = 5, потом a = "текст" — и всё нормально Нет, это даже в Python не нормально. Но работать будет, да. Оказалось, := — это когда переменную создаёшь. А = — когда она уже есть. Почему нельзя просто одно оставить? Хочется только palm-face делать. Зачем я должен писать одну и ту же проверку в каждом вызове функции? Зачем проверять произошла ли ошибка, действительно? Разницу между слайсами и массивами и прочие тонкости реализации очень любят спрашивать на собеседованиях, рассчитывая отсеить людей без высшего образования. Ого, то есть высшее образование это когда "программист" хоть как-то понимает что за кардинально разные типы данных у него на руках? В Python я часто писал: for i in range(len(arr)): print(arr[i]) ... ну и зачем ты это так писал? Выбить деньги на более мощное железо? А в Go так нельзя, так как это парадигменный язык. Там пишут через range сразу: for i, val := range arr { fmt.Println(val) } Узнал новый термин: парадигменный язык. Буду на собеседованиях спрашивать. Ну и да: в Go можно и как в Python, как и в Python как в Go. Искренне недоумеваю: что можно было делать три года с таким пониманием ЯП? А в Go классов нет. Есть struct, и ты к ним можешь привязать функции. А ещё есть масса других типов данных, к которым ты тоже можешь привязать функции. Чем struct особенен? Там надо через func (s *MyService) Do() писать. Звездочка - означает что ты берешь данные из оперативной памяти. Это надо навсегда будет запомнить! Звёздочка -- означает что данные берутся из оперативной памяти. Такого ещё не слышал. Ржал в слух. После чего, конечно же, сомнения что это не по приколу написано. -- 2.51.0