суббота, 27 мая 2017 г.

Язык программирования Kotlin

Достаточно интересный новый (2011г.) язык Kotlin, идущий на смену Java. Моё внимание на него обратили ex-сотрудники моего отдела (когда-то), ныне благополучно пребывающие в Канаде. Вряд ли необходимость замены Java и появление Kotlin было необходимо, целесообразно и объяснимо ... если бы не Android. 😆

Начальное знакомство и обсуждения относительно Kotlin будут мною размещаться в несколько (после 03.06.2017) тем здесь:
Kotlin - это всё, что касается самого инструментария: где взять, как установить, как начать использовать, где искать документацию, новинки версий...;
код Kotlin & Java - здесь обсуждение (на конкретных примерах кода) синтаксиса и семантики языка (для сравнения с Java, поскольку Kotlin продолжает и расширяет Java);
Вот уже 2 большие темы обсуждений сложились вокруг языка Kotlin. Не исключено, что их число, по мере наполнения, будет увеличиваться.
Потом, возможно, это сложится во внятный текст с описанием использования языка (как было с Go) ... если подберётся достаточно материала, не угаснет интерес, и будет у меня достаточно на то времени.

Кроме того, по Kotlin сложилось (и активно расширяется) русскоязычное сообщество в Telegram (мне не кажется удачным выбор Telegram как средство общения сообщества, но пока оно так есть...). Я обещал сообществу подготовить переводы по некоторым разделам документации по Kotlin (Kotlin имеет достаточно обстоятельную оригинальную документацию). По мере готовности этих переводов я буду размещать их здесь, редактируя это сообщение ... чтобы не плодить множество идентичных и мало содержательных сообщений.

Я уже показывал здесь, в блоге, ссылку на текст Сравнительное обозрение языков программирования, где сравниваются реализации одной и той же задачи, выполненные на 15 языках программирования. Теперь к ним предстоит присовокупить и Kotlin. 😆
P.S. К 02.06.2017 такой 16-й вариант уже сделан и представлен (в темах, ссылки на которые показаны выше).

Активные ресурсы Kotlin на сегодня:

Руководство по языку Kotlin - здесь формируется (заканчивается) перевод оригинальной документации Kotlin (от разработчика, JetBrains).

- Русскоязычный канал официального чата JetBrains по языку Kotlin в корпоративном мессенджере Slack (нужно зарегистрироваться и получить инвайт).



пятница, 12 мая 2017 г.

Go конспект: дополнения и обсуждения

Меня достаточно часто спрашивают всякие уточняющие вопросы по выложенной здесь два с половиной года назад рукописи Go конспект ... в частности, будут ли по ней обновления и расширения?

Во-первых, на одной и той же страничке блога, если кто не обратил на это внимания, обновляется редакция выложенного материала, но делается это потихоньку ... "втихаря", чтобы не создавать новые сообщения по каждому чиху. На сегодня там лежит редакция от 17 апреля 2017 ... согласитесь, это достаточно свежая версия (правда, правки этой редакции, главным образом стилистические и синтаксические).

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

Инструменты Go
cборка приложений Go
GUI на Go
Примеры кода Go
alternatives
редкие полезные команды
Go


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

Предупреждение: это всё форумные обсуждения, многостраничные, не упорядоченные, ... "взлохмаченные", начатые (некоторые из них) не один год назад. Поэтому читать эти форумные обсуждения лучше начинать лучше с конца.

воскресенье, 7 мая 2017 г.

лицензия Creative Commons Attribution ShareAlike

Все заметки (тексты, программные коды) ниже были представлены под лицензией Creative Commons Attribution ShareAlike. Которая требует некоторых разъяснений и ссылок:

Во-первых, я бы вообще не заморачивался с лицензиями, если бы читатели этих заметок прошлых лет (и не один, а несколько) не обращались с вопросами о том, под какой лицензией представлены эти материалы и не советовали явно указать вид лицензии. И выбор был остановлен на лицензии Creative Commons Attribution ShareAlike.

Во-вторых, на текст этой лицензии (русский перевод) есть не раз ссылки внутри сообщений блога, но ... эти ссылки умерли, домены распродаются ... а выискивать и править ссылки по старым сообщениям, 5-летней и более давности, у меня определённо нет никакого желания.

Лицензия Creative Commons Attribution ShareAlike - это лицензия "общественное достояние" и "атрибуция - на тех же условиях". Ссылка на перевод на русский с английского и перевод с юридического на человеческий - здесь: Атрибуция - на тех же условиях.
Логотип лицензии "общественное достояние" выглядит примерно так:
 




Почему такая лицензия, а не свободная лицензия MIT, BSD, или Apache (из числа "самых" свободных)? Только потому, что эти свободные лицензии в большей мере применимы к программному коду, а Creative Commons распространяется так еж и на тексты публикаций. Creative Commons — лицензия, которая пытается перевести проект в общественное достояние в максимальной форме, разрешенной законом. А если закон не позволяет это совершить, автоматически применяет положения разрешительной лицензии.

Что вы можете согласно этой лицензии? (цитирую по ссылке выше):
Вы можете свободно:
Делиться (обмениваться) — копировать и распространять материал на любом носителе и в любом формате
Адаптировать (создавать производные материалы) — делать ремиксы, видоизменять, и создавать новое, опираясь на этот материал для любых целей, включая коммерческие.
Что вы обязаны соблюдать при этом?:
«Attribution» («Атрибуция») — Вы должны обеспечить соответствующее указание авторства, предоставить ссылку на лицензию, и обозначить изменения, если таковые были сделаны. Вы можете это делать любым разумным способом, но не таким, который подразумевал бы, что лицензиар одобряет вас или ваш способ использования произведения.
«ShareAlike» («На тех же условиях») — Если вы перерабатываете, преобразовываете материал или берёте его за основу для производного произведения, вы должны распространять переделанные вами части материала на условияхтой же лицензии, в соответствии с которой распространяется оригинал.





суббота, 6 мая 2017 г.

Интерпретация программного кода

Вот такая вот учебная, но отнюдь не простая задачка: написать  интерпретатор программных кодов, написанных на максимально упрощённом C-подобном языке.

Такого типа задачи могут на практике вылезать в самых разных случаях, и с самых разных языков ... описания чего-либо.

Я предполагаю написать это на C++. Такая задача куда проще решалась бы на ... скажем, Python ... или Lisp, Ocaml и т.д. Но ... "мы не ищем лёгких путей" 😉 - пусть будет C++.

Но не исключено, что в какой-то момент мне это наскучит 😉 ... и я продолжу делать то же на Python...

Развитие проекта, по ходу его рождения, описывается здесь: интерпретатор программного кода (на C++). Там уже есть готовый код работающего интерпретатора, который можно взять, скомпилировать и наслаждаться... : экспериментировать, вносить изменения.

А основная (и, как понимаете, самая сложная в реализации) часть - вычисление выражений - здесь: обратная польская запись. Там планируется параллельно рассмотреть 2 альтернативные реализации: а). метод рекурсивного спуска и б). алгоритм сортировочной станции Э.Дейкстры (как заметно чаще более известный). Пока представлен только 1-й из них ... именно как менее известный. 😉

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

P.S. Всё это предоставляется под лицензией "Общественное достояние - на тех же условиях" (Creative Commons Attribution ShareAlike), см. Attribution-ShareAlike.

P.S. Там после 09.05.2017 (с Днём Победы! 😉) существенные расширения: для лексического разбора и трансляции операторов языка применены регулярные выражения в C++, использование которых ранее детально описывались в публикации Регулярные выражения C/C++.