myStack
890 subscribers
761 photos
15 videos
27 files
310 links
Меня зовут Ростислав и я разработчик.

Это мой личный блог.

Я пишу на Go, читаю книги про технологии и пишу об этих и других вещах сюда.


Книги:
https://bit.ly/rostislav-books

Личка:
https://t.me/Rostislaved

Сайт:
Rostislav.me
Download Telegram
😂😂😂😂
Go statement considered harmful
GUI и API
GUI - это Graphical User Interface
API - Application programming Interface
Interface - с английского это граница раздела. Кстати глагол to interface - взаимодействовать.
То есть, например, в ведре вода - ее поверхность это интерфейс воздуха и воды - это для понимания природы слова.

В программировании также интерфейс - это раздел сред.
GUI - это раздел сред (внутренности программы)/(человек). То есть этот интерфейс создан, чтобы юзер глазами заглянул на запущенную программу (то есть на её GUI), увидел и мог нажать кнопочки. На этой границе происходит взаимодействие.
API - это также граница, где происходит взаимодействие. Только не программы с человеком, а программы с другой программой.
В GUI ты видишь кнопочки и т.д. - это те элементы, посредством которых ты взаимодействуешь с программой.
В API одна программа видит тоже некие кнопочки другой программы. Жмет их и что-то происходит. Только разница в том, что программам не нужно какое-то визуальное представление в виде кнопочек, менюшек и т.д. ей нужно что-то попроще (или по сложнее, как посмотреть, суть - без визуальной части).
API, вообще говоря, бывают разные. Для разных программ.

Есть web-API - Я на работе, например, именно такие и пишу. То есть я пишу для одной программы определенные "кнопочки", а другая их нажимает. www.google.com/images - одна кнопочка, www.google.com/maps - другая кнопочка. Какую из них нажмет браузер, то и получет.

Есть API операционной системы. Грубо говоря программы на компе используют функции операционной системы (функции - прям как в языке программирования. Называются системные вызовы.)

Есть API у базы данных. Кнопочки этого апи нажимаются драйвером базы данных, код которого встраивается в программу, которую пишет разработчик. Например, опять же я. Есть программы для более легкого анализа и работы с базами данных, например, DataGrip. Её тоже когда-то писали разработчики, и в ней также есть драйвер базы данных, но у нее есть еще один интерфейс GUI. То есть схематично выглядит так: Ты —->(GUI)-DATAGRIP-(database_driver)—-> (database API)-База данных.
😂
ппц
This media is not supported in your browser
VIEW IN TELEGRAM
По цене самого дешевого айфона можно купить посудомойку, стиралку, утюг, чайник - как минимум)
Боже, линукс - это что-то нереальное.
Видите это окно для скриншота? Оно не с моего компа. Оно с компа, который стоит в офисе.
Я подключился к нему через ssh и запустил программу. Оно выполняется там, а через ssh передается инфа, с помощью которой x сервер у меня на компе рисует это окно. Просто афигеть)
В итоге я сделал скрин на своем компе, а он сохранился на том!
1
Сейчас в одном айтишном канале, на который я подписан был пост-реклама с где-то 50ю другими каналами. Я конечно начал по ним прыгать и оценивать интересен ли мне контент. В одном нашел пост с инициативой создать базу знаний по нагрузочному тестированию. Зашел, а там чел, который меня на 1й стажировке меня учил делать нагрузочные тесты. Забавно :)
Чет увидел картинку и очень понравилась. Подумал: "Хотел бы я там жить. Вот бы меня туда перенесли". А потом осознал, что, если бы так случилось, то я наверное бы был опустошен.
Все новое. Все, что я знаю о мире - бесполезно, ибо оно знание о другом мире.
Все мои усилия, которые я приложил в жизни: школу закончил, универ, язык учил, в какой-то мере разбирался в людях - т.е строил картину этого мира - всё не нужно, всё обесценено. Может там 90% населения говорит на японском? Может никто не учит географию Земли ибо это не она, или может набор знаний в школе (т.е. общественных) совершенно другой. Наверное там было бы одиноко.
типичные фанаты раста в чате про го)
Apple не сделала чего-то нового в своих новых процессорах. Это по сути уже существовало всё давно. Но не использовалось по одной причине, имя которой - обратная совместимость.

Небольшое отступление. Когда язык программирования компилируется, то он превращается в ассемблер, то есть по сути в непосредственные инструкции, которые выполняет процессор.

У разных процессоров могут быть разные наборы таких инструкций. То есть например строчка а = а + 1 может преобразоваться в 3 инструкции:
1. Достать а из памяти
2. Сложить а и 1
3. положить результат в память
А может преобразоваться в одну инструкцию, которая делает сразу все три действия атомарно.
Суть в чем. Если делать это за 1 инструкцию, то будет немного быстрее. Но из-за этого набор инструкций будет содержать +1 инструкцию. Когда поняли, что такой подход ускоряет работу, то стали очень много клепать таких инструкций на каждый чих, ускоряя выполнение некоторых действий, но раздувая число инструкций в процессоре.

Каждая новая инструкция - это определенные транзисторы, т.е. все не дается бесплатно. Выигрываешь на скорости инструкций - уменьшается число транзисторов. Это был первоначальный подход и это называется CISC - Complex Instruction Set Computing\er то есть сложный (полным) набор инструкций.

Когда поняли, что бесконечно добавлять инструкции нельзя, то решили их уменьшить. Сделали статистику, какие инструкции используются чаще всего - те оставили (например как выше инкремент на 1 т.к. частая операция), а те, которые используются редко - их убрали, чтобы транзисторы не занимали. Так появилась RISC набор инструкций. Reduced instructions set computing\er. Уменьшенный набор инструкций то есть. Архитектура ARM как раз использует RISC набор инструкций.

Как оказалось архитектура с RISC набором инструкций показывает хорошую производительность и имеет маленькое энергопотребление. И это все при том, что у нее не было тех n лет развития, как у CISC к тому времени.
Казалось бы, бери риск и все будет красиво. Но вот тут и вмешался бизнес. Дело в том, что программы, работающие на компе с одной архитектурой не работают на компе с другой. И чтобы программа заработала надо или ее перекомпилировать или сделать эмулятор.
И к тому моменту никакие компании не решились так РИСКовать ради тогда еще не слишком значительного преимущества в производительности. Легче было купить компов побольше. И они продолжили вливать деньги в интел\амд, удерживая их лидерами всего.
Эти компании тоже поняли, что риск крутая штука и свои процы переделали очень неплохо, по сути сделав их внутри РИСК процессорами, кажущимися ЦИСК процессорами, все для сохранения обратной совместимости. И так продолжается очень давно.

Но тут вдруг начали развиваться мобильные устройства, одним из главнейших требований которых - малое энергопотребление. И при этом им не надо было сохранять обратную совместимость. Не было никакого СТАРОГО Apple Store, приложения которого бы перестали работать. Тут и пошли в бой процессоры в РИСК набором инструкций. Постепенно развиваясь за счет покупателей айфонов и самсунгов за 100к они стали очень хорошими процессорами догнавшими по бенчмаркам компы. И это при работе от аккумулятора в маленьком телефоне.

Не знаю кто первый это сделал, но мне кажется Microsoft, выпустив свой Surface в двух вариантах с процессором Intel (CISC) и процессором на ARM (RISC). И тот который с ARM не взлетел. Софт не работал и никому это было не надо. Сейчас остались серфейсы только на интеле.

Но в 2020м году врывается гейм ченжер - Apple, делая свой комп с процессором с RISC набором инструкций при этом годно подготовившись - перекомпилировав все свои стандартные программы и сделав жизнь других программистов легче, подготовив все для того, чтобы им было легко перекомпилировать свои программы + выпустив эмулятор для тех программ, которые не будут перекомпилированны.
Таким образом, практически устранилась единственная причина невозможности RISC процессоров на рынке настольных компов и эпл получает все плюсы арм процессора.