Pull to refresh

Io programming language

Reading time 3 min
Views 8.1K
Abnormal programming *ООP *Smalltalk *
По факту защиты мной диплома образовалось некоторое свободное время и я таки решил собраться и написать про эту чудесную штучку.
Мы в последнее время видим всплеск интереса ко всяким языкам очень высокого уровня, с анонимными функциями, каррингом, мапом/фолдом, метапрограммированием и прочим блэкджэком. Слава богу, я считаю.
Задачи усложняются и если люди применяют относительно низкоуровневые средства разработки зачастую наступает ситуация, когда набор абстракций оказывается мал в рамках решаемой задачи, примерно так появляется «спагетти» и велосипеды. Хорошего мало. Хотя умалять роль низкоуровневого программирования не хочется совершенно, по понятным причинам.

Совсем недавно, в 2002 году, бравый американец Стив Декорте понял, что ему как-то все вокруг не нравится. Ну то есть нравится, но как-то по частям. Нравится Smalltalk своей Ъ-ООП природой, нравится Lisp своей системой метапрограммирования и общей мегаизвратностью, нравится Self своими прототипами, нравится Lua, потому что маленькая и клево встраивается куда угодно. А вот что бы все и сразу — что-то не то. Погоревал бравый американец, да и наколбасил свой собственный язык программирования — Io.

Io


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

Ну что, поехали.
Читать дальше →
Total votes 109: ↑109 and ↓0 +109
Comments 136

Io Language: Синтаксис

Reading time 4 min
Views 3.5K
Abnormal programming *Lisp *Smalltalk *

В продолжение серии статей про Io, хотелось бы отдельно остановиться на синтаксисе языка.
В двух словах синтаксис Io можно описать так: простой, но странный. Многих удивит такой подход, но, спешу заверить, как и в Lisp, синтаксис неудобен только при взгляде со стороны. С эстетической точки зрения можно отдельно выделить тот факт, что многие прогаммы на Io внешне кажутся излишне разреженными, на экране остается много «лишнего», незаполненного полезным кодом места, это ощущение меня не покидает довольно давно, я пока не придумал, как полностью избавиться от этого вывиха мозга, я просто придумал для себя некоторые правила оформления кода, при соблюдении которых эффект значительно сморщивается:
  • Длина строки не должна превышать 80 символов (Привет, text mode!)
  • Между клонированием объекта и описанием тела нового должна быть пустая строка
  • Методы и свойства группируются
  • Без лишней необходимости скобки на новую строку не переносятся


Ну что, поехали. Вынос мозга №2.
Читать дальше →
Total votes 50: ↑45 and ↓5 +40
Comments 17

Io Language: Объектная система

Reading time 4 min
Views 1.9K
Abnormal programming *

Введение


Продолжая писать про io, совершенно необходимо остановиться отдельно на устройстве объектной системы этого чудесатого езычка. Главная проблема в том, что даже если вы «знаете» ООП, вполне может сложиться ситуация, что вы просто не поймете, как оно устроено в io. Сейчас под ООП почему-то подразумевается модель Java, чаще всего. C++ нельзя назвать объектно-ориентированным языком, потому что он язык поддерживающий парадигму ООП, но это не его основная парадигма. Java больше подходит под гордое звание Ъ-ООП языка, но вот беда, ООП диктуемое Java-like языками довольно извращено. Изначально принципы ООП зарождались в Smalltalk'е и там все выглядело несколько иначе, объекты общались друг с другом не посредством вызова методов, а посредством передачи друг другу сообщений, мне до сих пор странно, почему же от этой модели ушли, ведь такое построение позволяет ввести прозрачную параллельность в язык без костылей. Посмотрите на нынешние круто параллелящиеся языки, тот же Erlang например, там все сделано через сообщения. Опять же нагородили огородов из RPC, COM и прочего dbus'а. А ведь как все хорошо начиналось.
Читать дальше →
Total votes 46: ↑43 and ↓3 +40
Comments 72

Io Language: Система сообщений

Reading time 5 min
Views 1.9K
Abnormal programming *
Сегодня продолжим цикл статей, начатый достопочтенным semka. Поговорим о сообщениях.

В Ио нет вызовов функций, но есть посылка сообщений. У сообщения могут быть аргументы (почти как аргументы функции), но аргументы сообщений не выполняются перед посылкой.
Читать дальше →
Total votes 27: ↑27 and ↓0 +27
Comments 20

Мифические тормоза диска на Xen

Reading time 3 min
Views 2.6K
TrueVDS corporate blog
Часто при обсуждении различных способов виртуализации, сторонники Virtuozzo (обычно, хостеры на OpenVZ) вспоминают про услышенное когда-то и где-то утверждение типа «Xen тормозит при работе с диском». Заблуждение это имеет корни, связанные с радикально отличающимися механизмами кэширования диска у виртуальных машин Xen и контейнеров Виртуоззо. Как следствие, сильно отличаются при различных условиях характеристики производительности дисковой системы. Но заблуждение оседает в сознании крепко и надолго.

Чтобы закрыть тему «тормозов диска у Xen» и показать с цифрами, что тормозов нет, вот результаты unixbench, bonnie++ и упаковки исходников линуксовского ядра на одной и той же машине, на одном и том же разделе диска.
Читать дальше →
Total votes 22: ↑16 and ↓6 +10
Comments 33

TV?

Reading time 2 min
Views 341
IT-companies
The Wall Street Journal видимо решил отойти от своих стандартных тем и углубиться в расследования, так или иначе связанные с крупнейшими IT-корпорациями мира. Вот и сейчас, WSJ вновь поднимает достаточно интересную тему — собирается ли Google вторгаться в мир кабельного телевидения?

Для тех, кто внимательно следит за новостями вокруг корпорации добра, эта новость однозначно не является сюрпризом — слухи о том, что Google готовит что-то для сет-топ-боксов ходят по интернету давно. Тем не менее, еще ни одно издание, вроде Wall Street Journal с источниками, которым можно доверять ни опровергло, ни подтвердило ни один из них. До сегодняшнего дня.
Читать дальше →
Total votes 13: ↑6 and ↓7 -1
Comments 5

Google I/O 2011: Android Honeycomb 3.1, Ice Cream Sandwich и другие ШОКИРУЮЩИЕ новости

Reading time 2 min
Views 1.4K
Development for Android *


Android Honeycomb 3.1

Сегодня на конференции Google I/O 2011 была представлено обновление версии Android для планшетников. Одними из ключевых нововведений являются:

* виджеты теперь поддерживают скроллинг — как пример, виджет для Google Mail
* Устройства теперь могут являться usb-хостами: подключение XBox 360 джойстика, импорт фотографий с камеры
* Google TV теперь на 3.1 и поддержка рынка приложений на TV
* обновление станет доступно для Xoom Verizon сегодня, а для других устройств в течение нескольких недель

p.s. топик обновляется

Фотографии и др.
Total votes 107: ↑91 and ↓16 +75
Comments 150

Идея реализации пакета I/O в Java

Reading time 6 min
Views 6.1K
Java *

Совершенство достигается не тогда, когда уже нечего прибавить,
а когда уже ничего нельзя отнять.
Антуан де Сент-Экзюпери, Ветер, песок и звезды, 1939

Часто приходится проектировать и разрабатывать пакеты ввода/вывода для приложений на Java. С одной стороны есть java.io, которого бывает более чем достаточно. Однако, на практике редко удается обойтись набором стандартных классов и интерфейсов.

В статье, приводится практический пример идеи для реализации пакетов ввода/вывода на платформе Java.

Читать дальше →
Total votes 21: ↑15 and ↓6 +9
Comments 49

Google выпустила приложение Google I/O 2012

Reading time 1 min
Views 1.3K
Website development *
image

На официальном магазине приложений от Google, Play Маркет, появилось приложение Google I/O. Данное приложение приурочено к скорому началу ежегодной конференции от Google, которая ориентируется, в основном, на веб-разработчиков.

Приложение позволяет просматривать план мероприятий и отмечать понравившиеся, просматривать подробную информацию о выступлении (например, биографию спикера, фотографии и профиль в Google+), получать напоминания о предстоящих выступлениях, синхронизировать календарь с датами выступлений, стримить видео выступлений для Android Honeycomb+ и многое другое.
Читать дальше →
Total votes 29: ↑24 and ↓5 +19
Comments 20

Профилирование нагрузки на файловую систему с помощью iostat и gnuplot — заметки дилетанта

Reading time 9 min
Views 88K
Configuring Linux *System administration *
Tutorial
Зачастую работа «в поле» требует сбора и анализа информации на сайте заказчика в условиях наличия крайне скудного списка утилит. В частности собрать информацию об использовании системы ввода-вывода в течении дня.

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

Я не претендую на доскональное владение предметом и точное использование терминов. Более того, я постараюсь говорить «обычным» языком и не бросаться терминами.

Все описанное ниже есть плод опыта, ошибок, гугления, курения манов и прочая
Читать дальше →
Total votes 47: ↑43 and ↓4 +39
Comments 10

AWS: Новые скорости EBS и тесты производительности

Reading time 5 min
Views 5.7K
EPAM corporate blog Amazon Web Services *
Привет! image

В конце прошлого года я провёл небольшой тест производительности дисков на Амазоне и написал по этому поводу статью. Совсем недавно Amazon Web Services анонсировали новые возможности в EBS с гарантированным количеством IOPS — 4000. Я решил написать не просто новость, а продолжить тесты с этими дисками и рассказать об этом сообществу.
image
Подробности под катом
Total votes 12: ↑10 and ↓2 +8
Comments 11

Siemens SGold: I/O сниффер

Reading time 35 min
Views 13K
C *Reverse engineering *
Сниффер — специальная программа для анализа и перехвата сетевого трафика, передачи данных через интерфейсы
и многого другого. В данном случае мы будем мониторить операции (чтение и запись) с портами ввода-вывода
на примере телефона линейки Siemens SGold и я постараюсь объяснить, как это всё работает.

image

Читать дальше →
Total votes 33: ↑33 and ↓0 +33
Comments 8

3D-печать ляжет в основу дата-центров будущего

Reading time 4 min
Views 9.8K
ua-hosting.company corporate blog IT Infrastructure *CAD/CAM *Design
Nike использует 3D-принтеры для производства футбольных бутс. Врачи – для протезирования. Компании Ford и GM – для создания прототипов тормозных колодок, рычагов и прочих запчастей. Этот новый вид промышленного оборудования способен воспроизвести любой материальный объект, по крайней мере, теоретически может.

Читать дальше →
Total votes 12: ↑11 and ↓1 +10
Comments 1

Темная сторона protobuf

Reading time 7 min
Views 82K
Programming *Java *
В среде разработчиков часто бытует мнение, что протокол сериализации protobuf и его реализация — это особая, выдающаяся технология, способная решить все реальные и потенциальные проблемы с производительность одним фактом своего применения в проекте. Возможно на такое восприятие влияет простота применения этой технологии и авторитет самой компании Google.

К сожалению, на одном из проектов мне пришлось вплотную столкнуться с некоторыми особенностями, которые никак не упоминаются в рекламной документации, однако сильно влияют на технические характеристики проекта.
Читать дальше →
Total votes 29: ↑25 and ↓4 +21
Comments 52

Особенности протокола в IO-играх

Reading time 5 min
Views 15K
Self Promo
Допустим, вы хотите создать IO-игру. Что-то похожее на agar.io, slither.io и тысячи их.

Что такое IO -игры
Такое название закрепилось за браузерными, клиент-серверными многопользовательскими играми в реальном времени.

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

Родоначальником жанра является agar.io

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

Сейчас я так не думаю.
Расскажу почему
Total votes 34: ↑27 and ↓7 +20
Comments 75

Как эффективнее читать данные с диска (при условии, что у вас .Net)

Reading time 7 min
Views 12K
Технологический Центр Дойче Банка corporate blog IT systems testing *Programming *.NET *Development for Windows *


Привет, Хабр! Некоторое время назад меня заинтересовал вопрос: как эффективнее всего читать данные с диска (при условии, что у вас .Net)? Задача чтения кучи файлов встречается во множестве программ, которые при самом старте начинают вычитывать конфигурации, некоторые самостоятельно подгружают модули и т.д.

В интернете я не нашел подобных сравнений (если не считать тюнинга под определенные конфигурации).
Читать дальше →
Total votes 21: ↑19 and ↓2 +17
Comments 18

Яндекс.Станция. Как мы создавали первое устройство с Алисой

Reading time 8 min
Views 101K
Яндекс corporate blog Search engines *Gadgets Artificial Intelligence Voice user interfaces *


Несколько минут назад на конференции YaC 2018 мы впервые рассказали о Яндекс.Станции. Это первое мультимедийное устройство с Алисой, которое воспроизводит музыку и фильмы, рассказывает детям сказки, помогает в повседневных делах, а также поддерживает навыки от сторонних разработчиков.

Может показаться, что для создания подобных устройств достаточно взять голосового помощника, добавить к нему простой микрофон из смартфона и спрятать всё это в корпусе недорогой аудиоколонки. На практике перед разработчиками подобных систем стоят серьёзные технологические проблемы, о решении которых в Станции мы и расскажем сегодня читателям Хабра. Вы также узнаете, что именно представляет собой технологическая платформа Yandex.IO, на основе которой и создано устройство.
Читать дальше →
Total votes 184: ↑168 and ↓16 +152
Comments 598

SciPy, ввод и вывод в MATLAB

Reading time 4 min
Views 6.1K
Python *Mathematics *Matlab *
Tutorial

SciPy (произносится как сай пай) — это пакет прикладных математических процедур, основанный на расширении Numpy Python. С SciPy интерактивный сеанс Python превращается в такую же полноценную среду обработки данных и прототипирования сложных систем, как MATLAB, IDL, Octave, R-Lab и SciLab. В этом посте я хотел бы рассказать о возможностях пакета ввода/вывода scipy.io, который позволяет работать с файлами данных Octave и MATLAB.

Читать дальше →
Total votes 14: ↑13 and ↓1 +12
Comments 2

Типичные ошибки при логгировании

Reading time 7 min
Views 9K
High performance *Java *Perfect code *.NET *Kotlin *
Recovery mode
Translation

Привет, Хабр!


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


Однако, несмотря на всю важность и распространенность подобной технологии, я заметил, что люди зачастую совершают стандартные ошибки при работе с ними. Эта статья во многом описывает поведение .Net, однако я сделал небольшие вставки из Java мира, просто чтобы было сравнение.

Читать дальше →
Total votes 15: ↑13 and ↓2 +11
Comments 22

Последние изменения в IO-стеке Linux с точки зрения DBA

Reading time 15 min
Views 19K
Конференции Олега Бунина (Онтико) corporate blog High performance *Configuring Linux *PostgreSQL *Database Administration *
Главные вопросы работы с базой данных связаны с особенностями устройства операционной системы, на которой работает база. Сейчас Linux — основная операционная система для баз данных. Solaris, Microsoft и даже HPUX все еще применяются в энтерпрайзе, но первое место им больше никогда не занять, даже вместе взятым. Linux уверенно завоевывает позиции, потому что open source баз данных все больше. Поэтому вопрос взаимодействия БД с ОС, очевидно, о базах данных в Linux. На это накладывается вечная проблема БД — производительность IO. Хорошо, что в Linux последние годы идет капитальный ремонт IO-стека и есть надежда на просветление.


Илья Космодемьянский (hydrobiont) работает в компании Data Egret, которая занимается консалтингом и поддержкой PostgreSQL, и про взаимодействие ОС и баз данных знает многое. В докладе на HighLoad++ Илья рассказал о взаимодействии IO и БД на примере PostgreSQL, но и показал, как с IO работают другие БД. Рассмотрел стек Linux IO, что нового и хорошего в нем появилось и почему все не так, как было пару лет назад. В качестве полезной памятки — контрольный список настроек PostgreSQL и Linux для максимальной производительности подсистемы IO в новых ядрах.
Total votes 48: ↑43 and ↓5 +38
Comments 9
1