Чех варит топор

Вер­нее, выва­ри­ва­ет, в рас­тво­ре лимон­ной кис­ло­ты с целью снять ржав­чи­ну. Вос­ста­нав­ли­ва­ет немец­кий стро­и­тель­ный топор вре­мён вто­рой миро­вой.

При­коль­но он его луком нати­ра­ет. Пишут, что луко­вый сок созда­ёт на поверх­но­сти угле­ро­ди­стой ста­ли защит­ное покры­тие из оксидов/солей желе­за.

Может, я и не прав

Но воз­вра­ща­юсь на ста­рое место рабо­ты. Сисад­ми­нить.

Вдо­ба­вок к при­бав­ке в зря­пла­те выцы­га­нил новые обя­зан­но­сти (ина­че какой смысл воз­вра­щать­ся?), так что теперь учить:

Azure/AWS: IaaS и про­чий PaaS

Полу­чать CCNA Cloud и CISSP. Плот­но занять­ся SIEM.

Вот это будет бом­ба. Так как буду­щее опре­де­лён­но за облач­ны­ми сер­ви­са­ми, я обес­пе­чу себе хоро­ший задел на гря­ду­щее.

А инфо­без… «Some things look better just passing through», как пел Элтон Джон. Да, в инфо­бе­зе мож­но зара­бо­тать боль­ше денег. Без вопро­сов. Хотя лич­но я боль­шой раз­ни­цы не вижу, по край­ней мере, с той сте­пе­ни, с кото­рой мне при­шлось начи­нать в этой обла­сти. И, как уже сто раз было гово­ре­но, пока­за­но и обос­но­ва­но, связь меж­ду зар­пла­той и удо­воль­стви­ем от рабо­ты если и есть, то очень сла­бая.

Про изучение языков программирования

Да, имен­но так оно и рабо­та­ет.

Имен­но поэто­му когда зна­ко­мые меня спра­ши­ва­ют, с како­го язы­ка начать зна­ком­ство с про­грам­ми­ро­ва­ни­ем, я нико­гда не сове­тую Джа­вас­крипт, Перл, Питон и про­чие язы­ки с дина­ми­че­ской типи­за­ци­ей. Совсем не пото­му, что они «хуже», а пото­му что понять, что про­ис­хо­дит, при отсут­ствии пони­ма­ния типов пере­мен­ных, невоз­мож­но.

Девоч­ка пыта­ет­ся совер­шить ариф­ме­ти­че­ские дей­ствия с пере­мен­ной типа char — дей­ствие, не вполне стан­дарт­ное, так что ком­пи­ля­тор дей­ству­ет «по наи­тию» — так что char в зави­си­мо­сти от кон­тек­ста ста­но­вит­ся чис­лом или стро­ко­вой пере­мен­ной.

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

Про­бле­мы с интер­пре­та­ци­ей нику­да не исче­за­ют, но если мы попро­бу­ем повто­рить девоч­ки­ны дей­ствия на том же C# или на Джа­ве, в рыло при­ле­тит при­вет от ком­пи­ля­то­ра — «ты чо с чем скла­ды­ва­ешь, совсем охре­нел, что ли?» И пред­ло­жит cast в дру­гой тип дан­ных. Поэто­му подоб­ных необъ­яс­ни­мых эффек­тов там про­сто не будет, а у про­грам­ми­ста выра­ба­ты­ва­ет­ся при­выч­ка рука­ми касто­вать пере­мен­ные при любых неяв­ных дей­стви­ях с раз­ны­ми типа­ми.

Сам я, кста­ти, пошёл сна­ча­ла по непра­виль­но­му пути, начав изу­чать про­грам­ми­ро­ва­ние с одно­го из самых запу­тан­ных язы­ков — с Пер­ла. Ну, того само­го, по кото­ро­му даже про­во­ди­лось сорев­но­ва­ние «Кто непо­нят­нее напи­шет» (https://en.wikipedia.org/wiki/Obfuscated_Perl_Contest). Не то, что­бы Пер­ло­вый код обя­за­тель­но полу­ча­ет­ся кри­вой и непо­нят­ный, но там очень про­сто сде­лать имен­но так. Для начи­на­ю­ще­го — не то.