artyom_ferrier (artyom_ferrier) wrote,
artyom_ferrier
artyom_ferrier

Categories:

Тёма осваивает цифровое колдовство

Надоели две вещи: публичные политики и коронавирус. Не знаю, что больше. Но в Иране, говорят, они решили подружиться. Пожелаем удачи всем.

Пока же — развлекаюсь, типа, программированием.

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

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

Ну и я, конечно, не программер, никогда не был, никогда не претендовал — но периодически случаются обострения интереса. Ибо всё-таки, живя в нашем мире, какие-то скрипты выстраивать уметь надо. Это как машину водить: не все обязаны быть автогонщиками, но хоть как-то рулить желательно. А даже если не рулить — то просто знать машинные повадки, когда по тем же улицам ходишь и желаешь ходить дальше, на своих не менее чем двоих.

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

Но, конечно, у него возможности есть.

У меня-то в его возрасте — была Батина двушка IBM (которую все боялись трогать за какой-то код, потому что это казался невообразимо сложный агрегат ценою в пару жигулей, служебный), да в школе — бэкашки. На которых шёл Бейсик.

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

Получалось, конечно, заплетание пути программы в очень причудливый такой «мёбиус» - что называется «спагетти-кодинг» и считается дурным тоном. Но тогда для школоты — было нормально. Даже круто. Главное — работало.

Потом, когда снова увлекался, — делал простенькие всякие игрушечки на Вижуал-Бейсике в девяностые, позже — в Мультимедиа Флеше, на Экшн Скрипте.

А сейчас — решил JavaScript'ом овладеть. Ну так, на полшишечки.

И вот если в Бейсике можно было вышивать при помощи Goto по всему телу программы, а в AC — по фреймам, размещая код там и тут, то в JS этого нет.

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

Но к некоторым особенностям, конечно, нужно привыкнуть.

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

Потом разобрался, что если значение присваивается в теле другой функции — не нужно писать Let (как привык с Бейсика), не нужно обозначать Var – а просто «a=x”, и вот тогда новое значение уйдёт в другие функции по цепочке.

Наверное, на каких-то «системных» курсах по JS проходят такие вещи — но я просто посматривал видосики, как люди кодят простенькие программки/игрушки. Так интереснее учиться. «Детективнее».

Но в принципе более-менее разобрался. Многое — конечно, очень похоже на Action Script из Флеша (который тоже кое-как припомнил).

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

Дал глянуть Лёшке — он оценил. «Кое-что можно и оптимизировать, но признаков явных и тяжких дефектов мозга — не выявлено».

От него — это комплимент.

Ещё — задал процедуры создания полей и размещения флотов для «первого в мире реалистичного космического боя». Давно была задумка — может, сейчас доведу до... если не «ума» - то его хоть какой-то видимости.

Серьёзно, вот продавить нужные условия на переговорах с каким-нибудь правительством или срубить бабла на более чем предсказуемых качелях фондового рынка — это рутина. Не то, чтобы совсем уж скучно — но тут сюрпризов не бывает, при моём опыте. И напрягаться особо не приходится.

А вот наваять игровое поле для звездобольских пострелушек — это повод для гордости. Практически — как в отрочество вернуться.

Но и просто интересно смотреть, как разные ребята на Ютубе по-разному решают задачи, гуляя между трёх полянок: JavaScript, HTML, CSS. Это особенно занятно, поскольку можно сразу проверить работу получающейся странички в браузере, безо всякой там компиляции в исполняемый файл.

Может, я созрею до того, чтобы забацать собственный сайт и разместить там кое-какие творения.

Попутно, как англотичер (в числе прочего), отметил, что эти программеры, когда не нативы, а русские-французы-немцы — очень старательно выговаривают слово width («ширина», часто употребляемый параметр). «УиДth”.

На самом деле, настолько акцентированно — никто из нативов его не произносит. Если «д» и звучит — то «мимолётно», как будто над строчкой этаким «верхним индексом». А в принципе — вполне нормальным будет и «ленивое» произношение, где width неотличимо от with.

Пользуясь случаем, в очередной раз порекламирую такой ресурс, как youglish. Очень полезно, если хочешь узнать, как на самом деле произносятся слова в английском разными носителями (преимущественно — грамотными, но всё же не «дикторами»).

Но это уж — про человеческие языки, а не машинные.

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

Речь — о цикле с while.

И вот ещё в советские времена доводилось встречать недоумение: «Нахрена он нужен, когда есть For?”

Попробую объяснить, как понимаю, где именно while будет полезен.

Вот представьте, что злая мачеха отправила маленькую девочку удить рыбу. И наказала не возвращаться, пока та не поймает реально большого карася, не меньше, чем на килограмм. Что большая редкость в тамошних водоёмах. Но вот пока не выудит — будет ловить.

Как это реализовать?

Ну, можно, конечно, использовать пляски с бубнами вокруг условий с If. И повторный вызов функции из самой себя, пока не «клюнет» килограммовый карась (ну или возврат через Goto в Бейсике).

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

Но гораздо проще (лично для меня, во всяком случае) — сделать это через цикл с while.

Var randomFish = 1;

while (randomFish<1000) {

randomFish = Math.random() * 1001);

}

Ну и в тело цикла — воткнуть переход к функции, которая описывает рыбалку.

Раз за разом будет генериться случайное число от 0 до 1 и умножаться на 1001. Какова вероятность, что это произведение окажется больше 1000? Ну, вот где-то одна тысячная. То есть, не известно, на сколько именно предстоит застрять внутри этого цикла — но, скорее всего, довольно долго он будет играть. Что и требуется.

Вот так «дёшево и сердито» задаётся «трудность» условия и низкая вероятность его удовлетворения. Когда ситуация не безвыходная (это не бесконечный цикл), но - «застрятельская».

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

Поэтому, пока выдалось время — буду дальше осваивать и баловаться плюшками-игрушками.

Tags: игрушки
Subscribe

  • Смысл через грамматику

    В недавней своей заметке про Tenses я сказал, что эти устойчивые сочетания со специфическими служебными глаголами можно любить уже за то, что они…

  • Ещё раз об английских Tenses. Часть 2

    (продолжение) Собственно, говоря, что я скептически отношусь к концепции Tenses – я подразумеваю именно это. Что грех делать вид, будто бы…

  • Ещё раз об английских Tenses. Часть 1

    Кажется, в России вершатся (и разверзаются) судьбоносные политические события, страна замерла в тревожном ожидании («Пройдёт ли Единая…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 16 comments

  • Смысл через грамматику

    В недавней своей заметке про Tenses я сказал, что эти устойчивые сочетания со специфическими служебными глаголами можно любить уже за то, что они…

  • Ещё раз об английских Tenses. Часть 2

    (продолжение) Собственно, говоря, что я скептически отношусь к концепции Tenses – я подразумеваю именно это. Что грех делать вид, будто бы…

  • Ещё раз об английских Tenses. Часть 1

    Кажется, в России вершатся (и разверзаются) судьбоносные политические события, страна замерла в тревожном ожидании («Пройдёт ли Единая…