From ed693888bf3e69596e743dfdce4df7dff5b93149 Mon Sep 17 00:00:00 2001 From: Sergey Matveev <stargrave@stargrave.org> Date: Fri, 2 Feb 2024 16:56:35 +0300 Subject: [PATCH] =?utf8?q?=D0=9A=D0=B0=D1=87=D0=B5=D1=81=D1=82=D0=B2=D0=BE?= =?utf8?q?=20=D0=BA=D1=83=D1=80=D1=81=D0=BE=D0=B2=20=D0=B8=20=D0=BA=D0=BD?= =?utf8?q?=D0=B8=D0=B3=20=D0=BF=D0=BE=20=D0=BF=D1=80=D0=BE=D0=B3=D1=80?= =?utf8?q?=D0=B0=D0=BC=D0=BC=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8?= =?utf8?q?=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit https://habr.com/ru/articles/790758/ Ðа поÑледний меÑÑÑ Ð¼Ð½Ðµ знакомÑе ÑкидÑвали пÑимеÑÑ Ð²Ð¾Ð¿ÑоÑов и оÑвеÑов на кÑÑÑÐ°Ñ Ð²ÑÑÐºÐ¸Ñ (бÑваÑÑ Ð¾ÑкÑÑÑÑе/пÑобнÑе ÑаÑÑи). Ðа кÑÑÑе ÑÑоимоÑÑÑÑ Ð² 40kâ½ ÑпÑаÑиваÑÑ ÐºÐ°ÐºÐ¸Ðµ пÑава доÑÑÑпа бÑдÑÑ Ð½Ð° Ñайле еÑли ÑделаÑÑ umask и Ñами же ÑовеÑÑенно некоÑÑекÑно вÑÑÑиÑÑваÑÑ Ð·Ð½Ð°Ñение, Ñ Ð¾ÑÑ Ð²ÐµÐ´Ñ Ð¼Ð¾Ð¶Ð½Ð¾ пÑоÑÑо взÑÑÑ Ð¸ ÑÑками вÑполниÑÑ umask+touch напÑимеÑ. ÐоказÑвали книгÑ, в коÑоÑой Ð½Ð°Ð·Ð²Ð°Ð½Ñ Ð¿ÑеимÑÑеÑÑва Go пеÑед Python поÑÑи ÑÑÐ¾Ð²Ð½Ñ "в нÑм ÑигÑÑнÑе ÑкобоÑки вмеÑÑо оÑÑÑÑпов". Ð ÑÑÑ Ð²Ð¾Ñ ÑÑаÑÑÑ Ð½Ð° ХабÑе. ÐÐ½Ð°Ñ ÑÑо кÑо-Ñо пÑиемлеÑ, но Ð¼ÐµÐ½Ñ ÐºÐ°Ðº беÑило иÑполÑзование "golang", Ñак и пÑодолжаеÑ, оÑобенно когда лÑди пÑиÑиÑлÑÑÑ ÑÐµÐ±Ñ Ðº Go-пÑогÑаммиÑÑам -- пÑи ÑÑом не знаÑÑ Ð¾ÑиÑиалÑное название ÑзÑка и инÑÑÑÑменÑа (Ð²ÐµÐ´Ñ Ð´Ð°Ð¶Ðµ ÑÐ°Ð¹Ñ Ð¾ÑиÑиалÑнÑй Ñже не "golang.org"). Ðо ÑÑо мелоÑи, ладно. С Ñамого наÑала идÑÑ "лÑÑÑе избегаÑÑ defer". Ðогда-Ñо ÑÑо ÑоÑно бÑло Ñак -- ÑÑоимоÑÑÑ defer оÑÑÑима. ТолÑко и пÑежде нелÑÐ·Ñ ÑÑо воÑпÑинимаÑÑ ÐºÐ°Ðº манÑÑÑ Ð¸ акÑиомÑ: еÑли ÑÑнкÑÐ¸Ñ Ñедко вÑзÑваеÑÑÑ, Ñо не ÑÑÐ¾Ð¸Ñ Ð²ÑедиÑÑ ÑдобоÑиÑаемоÑÑи и пÑоÑÑоÑе кода в ÑÐ³Ð¾Ð´Ñ Ð¼Ð¸Ð·ÐµÑной Ñкономии. Ðо Ñ ÐºÐ°ÐºÐ¾Ð¹-Ñо веÑÑии Go, defer ÑÑал кÑайне деÑÑвÑм и где-Ñо Ñ Ð²Ð¸Ð´ÐµÐ» ÑÑо оÑиÑиалÑно ÑекомендÑÑÑ Ð·Ð°Ð±ÑÑÑ Ð¿Ñо его ÑÑоимоÑÑÑ, не паÑиÑÑÑÑ, ибо он ÑаÑÑенÑко Ð¿Ð¾Ð¼Ð¾Ð³Ð°ÐµÑ ÑÐµÐ»Ð¾Ð²ÐµÐºÑ Ð¸Ð·Ð±ÐµÐ³Ð°ÑÑ Ð¾Ñибок и делаÑÑ ÐºÐ¾Ð´ пÑоÑе. ÐÑжно пÑавилÑно иÑполÑзоваÑÑ make. ÐÑжно изнаÑалÑно ÑоздаваÑÑ ÑÑÑÑкÑÑÑÑ Ð½Ñжного ÑазмеÑа, ÑÑÐ¾Ð±Ñ Ð½Ðµ ÑÑебовалоÑÑ Ð¿Ð¾Ñом вÑделÑÑÑ Ð´Ð»Ñ Ð½ÐµÑ Ð¼ÐµÑÑо в runtime, задеÑÐ¶Ð¸Ð²Ð°Ñ Ñем ÑамÑм оÑÑалÑнÑе пÑоÑеÑÑÑ. "ÐÑжно"? "ÐÑжно" и "желаÑелÑно" ÑÑо две болÑÑие ÑазниÑÑ. РкомменÑаÑиÑÑ ÑÑаÑÑи ÑÑÐ°Ð·Ñ Ð¶Ðµ оÑмеÑили ÑÑо из-за ÑÑого нÑжно можно Ñложнее код напиÑаÑÑ. ÐлÑÑ ÐºÐ°ÐºÐ¸Ð¼ пÑоÑеÑÑам make бÑÐ´ÐµÑ Ð¼ÐµÑаÑÑ? ÐÐ¾Ð¶ÐµÑ Ð³Ð¾ÑÑÑинам, ниÑÑм? ÐÑиÑÑм ÑÑÑ runtime? make в лÑбом ÑлÑÑае Ñоже в runtime вÑполнÑеÑÑÑ. Ð Ñ Ð½Ðµ ÑÑиÑÐ°Ñ ÑÑо пÑидиÑаÑÑÑ Ðº Ñловам -- по Ð¼Ð¾ÐµÐ¼Ñ ÑÑÑ Ð³ÑÑбейÑие оÑибки в иÑполÑзовании ÑеÑминов. ÐÑÑÑе иÑполÑзоваÑÑ Ð±ÑÑеÑизиÑованнÑе каналÑ. Ðак вÑем извеÑÑно, когда Ð¼Ñ Ð¿Ð¸Ñем в небÑÑеÑизиÑованнÑй канал, пиÑÑÑÐ°Ñ Ð³Ð¾ÑÑÑина блокиÑÑеÑÑÑ Ð´Ð¾ Ñого моменÑа, пока дÑÑÐ³Ð°Ñ Ð³Ð¾ÑÑÑина не пÑоÑиÑÐ°ÐµÑ Ð¸Ð· ÑÑого канала. ЧÑÐ¾Ð±Ñ Ð¸Ð·Ð±ÐµÐ¶Ð°ÑÑ ÑÑой блокиÑовки, можно иÑполÑзоваÑÑ Ð±ÑÑеÑизиÑованнÑй канал на 1 ÑлеменÑ. ТÑÑ Ð¼ÐµÐ½Ñ Ð¿ÑоÑÑо бомбиÑ. "ÐÑÑÑе" иÑполÑзоваÑÑ Ð±ÑÑеÑизованнÑе, говоÑÑÑ. ЧÑÐ¾Ð±Ñ Ð¸Ð·Ð±ÐµÐ¶Ð°ÑÑ Ð±Ð»Ð¾ÐºÐ¸Ñовок. Ð... а еÑли канал именно Ð´Ð»Ñ Ð±Ð»Ð¾ÐºÐ¸Ñовки и ÑÐ¸Ð½Ñ ÑонизаÑии и иÑполÑзÑеÑÑÑ? ÐÑÑеÑизованнÑй и небÑÑеÑизиÑованнÑй канал ÑÑо пÑоÑÑо ÑÑпо две ÑовеÑÑенно ÑазнÑе ÑÑÑноÑÑи, Ð´Ð»Ñ ÑазнÑÑ Ð·Ð°Ð´Ð°Ñ. ÐÑо как "лÑÑÑе" иÑполÑзоваÑÑ Ð°Ð²ÑÐ¾Ð¼Ð¾Ð±Ð¸Ð»Ñ Ð²Ð¼ÐµÑÑо велоÑипеда? for i, v := range slice в пеÑеменнÑÑ v Ð¿Ð¾Ð¿Ð°Ð´Ð°ÐµÑ ÐºÐ¾Ð¿Ð¸Ñ ÑлайÑа ÐÐ¾Ð¿Ð¸Ñ slice в пеÑеменнÑÑ? ÐÐ¾Ð¶ÐµÑ Ð±ÑÑÑ Ð²ÑÑ Ð¶Ðµ знаÑение ÑлеменÑа slice? ЧÑÐ¾Ð±Ñ Ð¾Ð¿ÑовеÑгнÑÑÑ Ð¼Ð¸Ñ Ð¾ пÑоизводиÑелÑноÑÑи пÑи пеÑедаÑи аÑгÑменÑа в ÑÑнкÑÐ¸Ñ Ð¿Ð¾ знаÑÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ по ÑÑÑлке, они ÑеÑили пÑоÑÑо поÑмоÑÑеÑÑ ÐºÐ°Ðº менÑеÑÑÑ Ð¿ÑоизводиÑелÑноÑÑÑ Ð¿ÐµÑÐµÐ´Ð°Ð²Ð°Ñ Ð¾Ð´Ð¸Ð½ жалкий int. ÐидÑÑ ÑÑо в ÑÑом ÑлÑÑае ÑазниÑÑ Ð¿Ð¾ÑÑи Ð½ÐµÑ Ð¸ делаÑÑ Ð²Ñвод ÑÑо миÑ. Ðалее ÑеÑили пÑоÑеÑÑиÑоваÑÑ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½ÑÑ ÑÑнкÑÐ¸Ñ Ð´Ð»Ñ Ð¸Ð½ÐºÑеменÑа ÑÑого же int-а. ÐÐ¾Ñ ÑолÑко они в Ñикле делаÑÑ ÑÑнкÑ... но не запÑÑкаÑÑ ÐµÑ Ð²Ð¾Ð¾Ð±Ñе. ÐÐ¾Ñ Ð¸Ð¼ÐµÐ½Ð½Ð¾ здеÑÑ Ñ Ð±Ñ Ð·Ð°Ñ Ð¾Ñел ÑволиÑÑ Ñеловека за Ñакое. Ðа Ñо как он ÑеÑил пÑовеÑиÑÑ Ð¸ какие вÑÐ²Ð¾Ð´Ñ Ñделал, а Ñакже пÑоÑÑо за вообÑе неÑабоÑий код. Ðалее ÑеÑÑиÑÑÑÑ Ð¿ÑоизводиÑелÑноÑÑÑ switch и... map. Я пÑÑм Ð²Ð¾Ñ ÑеалÑно впеÑвÑе вообÑе Ð²Ð¸Ð¶Ñ ÑÑо ÑÑавнивалаÑÑ ÑÑÑÑкÑÑÑа даннÑÑ Ð¸ код Ð´Ð»Ñ Ð³ÐµÐ½ÐµÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ if-ов (гÑÑбо говоÑÑ). ÐÑоде Ð±Ñ Ð¼Ð¾Ð¶Ð½Ð¾ и вообÑе не ÑазбиÑаÑÑÑÑ Ð² ÑложноÑÑи алгоÑиÑмов, но ÑÑÐ¾Ð±Ñ Ð´Ð¾Ð´ÑмаÑÑÑÑ Ð´Ð¾ ÑеÑÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑкоÑоÑÑи switch и map... То ли пÑежде лÑди (вклÑÑÐ°Ñ Ð¼ÐµÐ½Ñ) пÑоÑÑо не оÑобо инÑеÑеÑовалиÑÑ ÐºÑÑÑами и книгами и вÑегда Ñак Ð¿Ð»Ð¾Ñ Ð¾ вÑÑ Ð±Ñло. То ли на Ñоне бÑма ÑÑенда и hype на ÐТ ÑÑеÑÑ, на Ñоне ÑазвиÑÐ¸Ñ ÑелекоммÑникаÑий оÑобенно поÑле COVID, на Ñоне деÑиÑиÑа ÐТ-кадÑов ÑÑали ÑÑиÑÑ Ð¿Ð¾Ð»Ð½ÐµÐ¹Ñей безгÑамоÑнейÑей диÑи. Ðдно дело даваÑÑ Ð¼Ð°Ð»Ð¾, немного, повеÑÑ Ð½Ð¾ÑÑно, а дÑÑгое дело даваÑÑ Ð¾ÑибоÑнÑе, некоÑÑекÑнÑе и безгÑамоÑнÑе веÑи. -- 2.51.0