Экстраполяция IT
2.46K subscribers
89 photos
25 videos
305 links
Канал об IT в целом и о программировании в частности.

На канале объявлено военное положение и поэтому по вопросам рекламы пишите: @aratak, а деньги отправляйте сюда: https://send.monobank.ua/jar/97f7LwGQJF
加入频道
Ребята, сегодня пост будет неформатный. Сегодня — ссылка на заметку Д.Ханссона (в переводе) об современных IT-компаниях. Конечно, по современным меркам пост уже достаточно старый и некоторые из вас его наверняка читали, но новости же мы тут не публикуем! Дэвид рассуждает о таких вещах, которые за пару месяцев не устаревают, поэтому статья не потеряет актуальности еще через пару месяцев. Приятного чтения!

https://vc.ru/p/exponential-wrong
Скажите мне, друзья, публиковать ли подобные ссылки на интересные статьи из интернета в будущем? Если публиковать, то это будет достаточно редко и только на те статьи, которые удовлетворяют двум условиям: интересны вне зависимости от времени прочтения (не новости) и достойны нашего внимания.
Завтра утром напишу о собачьем пин-коде. Судя по прошлонедельному опросу, название достаточно интригующее. Как вы думаете, о собаках это или о банковской системе пост будет?
Попробуйте на слух отличить фразу «идет снег» от «инопланетные существа высадились на соседнем поле» на каком-нибудь суахили. Разница в паре звуков возможно может быть существенна, а может быть всего лишь случайным дефектом речи у конкретного произносящего. А собаки на слух вряд ли смогут отличить между собой слова «интерференция» и «интерпретация», потому как их слух и мозг не рассчитаны на тонкости понимания человеческой речи и конкретно русского языка. Вот даже если у вас никогда не было собаки, то вы наверняка знаете, что есть две основные команды, которым собак учат первыми: «нельзя» и «взять». Также есть вариации этих же самых команд в виде нелепых слов «фу» и «фас». Учить собаку, само собой разумеется, нужно диагональным командам — либо «фу» вместе с командой «взять» либо «нельзя» вместе с «фас». И фишка состоит в том, что случайно взятый человек не знает на какие команды натренирована собака, а ошибка в произнесении неверной команды может быть катастрофической. И естественно, лучше не давать никаких подобных команд чужой собаке, а то укусит поди, и еще и будет права. Пин-код на банковских картах или код блокировки на телефонах выполняют приблизительно ту же функцию, что и вариация собачьих команд — они призваны защитить от случайного постороннего вмешательства. Конечно же, целенаправленное зловредительство никак нельзя защитить никакими в мире паролями на телефонах, собаках или картах. Для этого существуют другие методы.

К чему это я. Зайдите на свои сервера и поменяйте порт ssh-доступа со стандартного двадцать второго на какой-нибудь другой. На двадцать третий или двести двадцать четвертый. На серьезные целенаправленные взломы это никак не повлияет, но вот от случайного бота, бродящего по сети и выискивающего свежие дыры в безопасности, это может спасти. Пройдет мимо, не обнаружив открытый двадцать второй порт.
Некоторое время назад был опрос о том, насколько много среди нас не айтишников. Совершенно не представляю что тут делают 10% неайтишников, но мне невероятно приятно, что в читателях канала есть еще и такие :-) Спасибо.

А давайте теперь посчитаемся с точки зрения профессии в айти. Итак:

🌚 - бэкэндер
🌝 - фронтендер
🌷 - дизайнер
🐼 - менеджер
🎱 - другой айтишник
🗿 - вообще не айтишник

Голосуем!
Сегодня опять анекдот, связанный с программированием. Этот — мой любимый. И анекдот этот до того странный что с него вряд ли получится посмеяться. Хотя как посмотреть, я вот ржал, как первый раз услышал его.

Первый контакт человечества и инопланетной расы. Инопланетянин и человек долго смотрели друг на друга, и вдруг инопланетянин говорит:
— Вокруг нас десять кратеров.
— О, я понял! — восклицает человек, — я вижу четыре кратера, значит вы используете систему исчисления с основанием четыре.
— Нет, — отвечает инопланетянин, — мы используем систему исчисления с основанием десять. А что такое «четыре»?
Во многих языках есть штука, которую называют «тернарным оператором». Как правило, эта штука записывается, как 'c ? t : f'. Штука замечательная, без споров, но вот её название звучит как-то коряво.
Даже если вы не знаете латинского, то совершенно очевидно, что смысл слова «тернарный» означает «тройной», что по сути сводит смысл оператора к тому, что у этого оператора три, вместо двух аргументов. Ну, вот оператор сложения (a+b) — с двумя аргументами, но мы не называем его «бинарным оператором», так как таких операторов у нас много и совершенно непонятно о каком конкретно операторе речь. А вот тернарник у нас один, и все как-то привыкли, что «тернарный оператор» — это на самом деле «условный оператор в тернарной форме».
Это если бы в маленьком городке жил один негр по имени Степан Илларионович, а всё село его бы вместо этого называло «Негр». Потому что он у них такой один. Вот такое себе легкое проявление расизма в программировании, ребята.
Сегодня вспомнили о замечательном тексте с названием "Число Грэма на пальцах". Текст большой, но настолько прекрасен, что стоит потраченных на него 20 минут. Цитата из статьи для затравочки:

«Рассчитывать его бесполезно, да и не получится. Количество степеней здесь не поддается осмысленному учету. Это число невозможно представить, его невозможно описать. Никакие аналогии на пальцах неприменимы, число просто не с чем сравнивать. Можно говорить, что оно огромно, что грандиозно, что монументально и заглядывает за горизонт событий. То есть придать ему какие–то словесные эпитеты. Но визуализация, даже вольная и образная — невозможна. Если с тремя стрелочками еще хоть что–то удавалось сказать, нарисовать безбашню от Земли до Марса, как–то с чем–то сопоставить, то тут аналогий быть просто не может. Попробуйте вообразить себе тонкую башню из троек от Земли до Марса, рядом еще одну почти такую же и еще одну, и еще... Бескрайнее поле башень уходит вдаль, в бесконечность, башни повсюду, башни везде. И, что самое обидное, эти башни даже отношения к числу не имеют, они лишь определяют высоту других башен, которые нужно построить, чтобы получить высоту башень, чтобы получить высоту башень... чтобы через невообразимое количество времени и итераций получить само число.»

Приятного чтения!

http://sly2m.livejournal.com/620353.html
Чтобы доказать свою правоту в спорах, последнее что нужно делать, это приводить аналогии. Ведь сразу же после приведенной аналогии собеседник начинает спорить с приведенной аналогией, а не с изначально высказанной мыслью. И спор после этого уходит в неправильное русло. Кроме того, аналогии приводятся от бессилия найти нормальную аргументацию. Не используйте аналогии в спорах.
«Любой опытный программист пишет бабайко-устройчивый код, под бабайкой каждый понимает свой собирательный образ грабли, ударившей его по носу огромное число раз. У очень большого числа программистов это реюзабельность, у других, например, отказо-устойчивость, у третьих, "сложность" . Человек решил побороться со своей бабайкой, что вызывает уважение, но делает это достатачно топорно и не понимая, что это не объективная проблема, а его бабайка, что прискорбно.»
Сегодня опять субботний анекдот с альтернативным юмором. Вспоминаем булеву алгебру и смеёмся :-)

Заходят три логика в бар. Бармен спрашивает:
— Кто-нибудь будет что-нибудь пить?
Первый:
— Не знаю
Второй:
— Не знаю
Третий:
— Нет.
Добрый вечер, ребята!

Сегодня хотелось бы вернуться к теме мгновенного обмена сообщениями в нашей профессиональной деятельности. Когда-то чатов в профессиональной деятельности, как таковых, не было вообще — вполне хватало почты и личной беседы, удаленной работы не существовало, а удаленно общаться нужно было с клиентами-заказчиками. В те далекие времена об удаленной работе вообще никто не думал по многим причинам и чаты воспринимались, как развлечение и средство таких себе удобных и дешевых СМС с компьютера на компьютер. Мы же все еще помним что такое СМС? Были чаты вообще, но их никто не ассоциировал с разработкой и работой вообще. Скайп был нужен только, чтобы поговорить голосом в назначенное время, а в аськи и джабберы воспринимались, как нечто вообще не связанное с работой. Сейчас же, в эпоху тотальной удаленной работы, чаты выполняют ту самую роль рядом стоящих, попивающих кофе коллег, которые по счастливой случайности находятся недалеко от твоего рабочего места и болтают о какой-то невообразимой фигне, пусть даже и связанной с текущим проектом. И ваш личный выбор слушать их одним ухом, а вторым программировать или одеть наушники с белым шумом и наконец-то начать работать двумя ушами сразу.

Конечно же, основной аргумент в пользу необходимости подслушивать такие разговоры слишком шаток и неубедителен. Звучит он где-то как «а вдруг я пропущу что-то важное!». С другой стороны этих морально-этических баррикад расположились любители белого шума в наушниках. Те, кто любит работать в сферическом вакууме. Они вообще не читают публичный чат до тех пор, пока их отдельно об этом не попросить в личном сообщении или телефонным звонком. И сильно раздражаются, если их туда вызывают на какую-то дискуссию.

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

И, конечно же, как и во всех правилах, и в этом есть исключение. Существует небольшое количество случаев, когда чатовый способ общения внутри команды более оправдан любого другого способа коммуникации. Это когда вас всего двое. Или трое. Ну, максимум четверо. В остальных случаях к чату нужно относиться, как к трёпу в курилке или на кухне и ни в коем случае не держать там важной информации и уж тем более заниматься в них управлением проекта. И абсолютно не важно сколько ботов и автоматонов вы добавите в ваш слэк — он все еще будет курилкой вашего виртуально-удаленного офиса, просто курить там будут еще и роботы.
Так, неделю назад мы выяснили, что нас тут подавляющее большинство айтишников в целом и разработчиков в частности. Конечно, это было более-менее очевидно, но, как говорил мой школьный учитель по физике, у очевидной вещи зачастую более сложные доказательства, чем у неочевидных на первый взгляд.
Сегодня мы выясним откуда же мы. Итак:
У каких-нибудь коренных племен каких-нибудь островов какой-нибудь Новой Зеландии может быть свой язык, терминология которого в корне не совпадает с другими языками. Сам принцип построения предложений и формулировка мысли может в корне несоответствовать тому, к чему мы привыкли. Скажем, у такого племени нет понятия «лево» и «право», а ориентируются в пространстве аборигены исключительно по сторонам света. У них есть понятие «южнее» или «восточнее», а приложение-навигатор будет объяснять не относительное положение поворота, а абсолютное. «Через сто метров держитесь южнее» или как-то так. Давайте для сгущения красок этой аллегории предположим, что у этого же племени не существует вопросительных предложений, а только лишь утвердительные. И вместо вопроса, допустим, «Как пройти в библиотеку?» на этом языке канонично говорить «Ты мне должен показать дорогу в библиотеку». И, чтобы еще сильнее вас запутать, давайте скажем, что этот язык напрочь лишен местоимений и числительных. Пример с библиотекой с этим новым правилом будет звучать, как «Чака должен показать Фасимбе дорогу в библиотеку». А Чака такой в ответ «Обезьяноподобным шагом на юго-восток и потом медвежий шаг на юг».

А теперь давайте подумаем, удобный ли этот язык для повседневного общения? Для аборигенов — безусловно. Они не знают как начать думать так, чтобы вообще захотелось сказать междометие «я», относительное направление или хоть какое-нибудь числительное. Для них тот мир вполне естественен и удобен, а наш с вами привычный мир для них по-уродски неприветлив. Верно же? Кстати, особым спросом пользуются полиглоты, в совершенстве владеющими семантикой и аксиоматикой нескольких языков.

Сейчас очень модно рассуждать на тему того, что настоящий программист не должен привязывать себя к какому-либо языку и должен мыслить категориями, выходящими за рамки конкретного языка или парадигмы. Мол, формулировка собственной профессии или должности, вроде «PHP-разработчик» или «HTML-верстальщик» обречена на провал и с такими людьми лучше не стоит иметь дело. А дело как раз и состоит в том, что язык программирования в первую очередь — это язык, а во вторую — программирования. И важно знать на каком языке думает программист, чтобы понимать его основу мышления и точку опоры в дальнейших дискуссиях. Не спрашивайте на каком языке программирования умеет программировать собеседник. Спрашивайте на каком языке он думает.
Ребята, три темы на выбор и я прям не знаю с чего начать. Как думаете, о чем написать? Вам слово.

🎓 Где находится в программировании филология.
💩 Как админам правильно смотреть на код разработчиков.
🛣 Почему мэр виноват во всех ямах на всех дорогах города.
Да, вы все правильно поняли, в одном из смайликов страшный спойлер.
Этот доклад с какого-то митапа (а судя по залу, людей там не слишком много) я пересматриваю где-то раз в пару месяцев и каждый раз смеюсь до слез. Сойдет за субботнюю развлекательную программу?
Язык программирования в первую очередь — язык. И относиться к нему нужно исключительно как к языку, как относятся к нему лингвисты и филологи. И не путайте, пожалуйста, алгоритмизацию с программированием. Та логическая цепочка действий, которая приводит к желаемому результату совершенно отвязана от технологии и языка программирования. Алгоритмизация существует вовне и скорее похожа на мысль, чем на формулировку этой мысли в виде фразы на конкретном языке.

Представьте себе, что человечество все-таки разработало искусственный интеллект, основываясь на тьюринг-машине. Конечно же, понадобилось тонны кода и огромные производительности, но в результате мы получили такую себе «думающую машину» (или даже лучше сказать «псевдо-думающую машину»). Ну, то есть технически, конечно, это будет обычная программа, которая ничем принципиально не отличается от нейрогенератора кошечек, эмулятора Ван Гога или системы, распознающей в каракулях пользователя картинки, но эта наша гипотетическая псевдо-мыслящая программа уже настолько сложна, что по всем канонам научной фантастики уже ничем не отличима от интеллекта. И общаться с такой системой мы будем, посредством какого-то формального языка, который понимает эта система. Скажем, «Сири» или «Окейгугл» понимает русский язык, а вот «Алекса» — нет. Сири хорошо может ответить на вопрос о том, нужно ли брать зонт на улицу или нет, ведь программисты позаботились о том, что вопрос о зонте качественно ассоциируется с погодой и конкретно наличием дождя.

А вот язык программирования же (который по своей сути является такой же программой, как Сири, просто более низкоуровневой) требует некоторых формальностей в общении и как правило обязует быть однозначным и оставаться в пределах своей семантики. И общение с компьютером посредством языка программирования технически не отличается с общением с аборигенами из предыдущего поста — нужно принять законы построения мысли и оперировать лишь тем, что доступно в пределах этой семантики.
Порой даже человеческому оппоненту не выходит донести какую-то конкретную мысль, а уж требовать от компьютерной программы абсолютного понимания — слегка перебор. Это я о возможном искусственном интеллекте говорю. И давайте сразу пример.

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

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

В итоге понятно, что тьюринг-полный искин из прошлого поста — это всего лишь качественно проработанная программа, хоть и гипотетическая. И написана она программистами или же другими, более слабыми искинами. И в программе этой уже просто так не разобраться. Такие вот программы, которые очень тяжело описать алгоритмически вне зависимости от того, доступен ли ее исходный код или нет называют «магией». Перефразируя третий закон Артура Кларка: «любая достаточно сложная программа неотличима от интеллекта». В итоге любую программу можно назвать «искусственным интеллектом» если логика работы программы достаточно сложная, и в ней не разобраться за вменяемое количество времени.
Вспомните только когда перестает быть интересным играть в компьютерные игры в режиме «против компьютера». Когда с завидной точностью можно предсказать поведение ботов в игре. Вначале, как только знакомишься с хорошей игрой, поведение «автоматонов» выглядит непредсказуемым и интеллектуальным. Поиграв немного, человек обучается и запоминает предыдущий опыт. А боты в играх — нет. И «хорошим ИИ» считают тот, который предсказать можно реже остальных. «Идеальным ИИ» назовут такого игрового бота, которого нельзя будет предсказать, потому как его поведение будет постоянно совершенствоваться и изменяться. Знаете ли вы игры, в которых ИИ обучается на поведении игрока (или всех игроков в мире)? Напишите мне личным сообщением, я вот таких игр не знаю.