Pull to refresh
14
0

Химик и программист.

Send message

Объектно ориентированное програмирование в графических языках

Reading time7 min
Views16K

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




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

Читать дальше →

Именованные аргументы функции в C

Reading time3 min
Views15K
В некоторых языках существует возможность вызова функции с именованными параметрами. Такой способ позволяет указать аргумент для определённого параметра, связав его с именем параметра, а не с позицией. Это возможно, например, в C# или Python.

Рассмотрим «игрушечный» пример на Python с использованием именованных аргументов:

#вычислим объем параллелепипеда
#если значение стороны не указано, то считаем что оно равно единице
def volume(length=1, width=1, height=1): 
  return length * width * height; 
print(volume())                            # V = 1 
print(volume(length=2))                    # V = 2 
print(volume(length=2, width=3))           # V = 6 
print(volume(length=2, width=3, height=4)) # V = 24

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

Ниже я покажу, как можно сымитировать использование именованных аргументов в C.
Читать дальше →

Длинные имена слишком длинные

Reading time6 min
Views18K

Привет, Хабр! Представляю вашему вниманию перевод статьи "Long Names Are Long" автора Bob Nystrom.


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


Но затем происходит вторая ступень, когда проверяется читабельность кода. Это гарантирует, что другие разработчики смогут поддерживать этот код в будущем. Легко ли понять и поддерживать данный код? Соответствует ли этот код стилю и идиомам языка? Хорошо ли задокументирован код?


Использование языка Dart в Google постепенно набирает обороты, и я много занимался подобными code review. Для разработчика языка это очень увлекательный процесс. Я получаю из первых рук представление о том, как люди используют Dart, что действительно полезно для его развития. У меня есть более четкое представление о том, какие ошибки являются общими, и какие функции интенсивно используются. Я чувствую себя как этнограф, ведущий дневник о жизни туземцев.


Но, в любом случае, дело не в этом. Черт бы его побрал, дело даже не в Darts. То, о чем я хожу поговорить, — это то, что я вижу во многих кодах, и что сводит меня с ума: излишне длинные имена.

Читать дальше →

Подарок к 9 мая

Reading time3 min
Views9.9K
Близится 9 мая. (Тот кто будет читать этот текст позже — сегодня 8 мая 2019 года). И в этой связи я хочу сделать нам всем вот какой подарок.

Совсем недавно я обнаружил у себя в стопке заброшенных CD-дисков игру Return to castle Wolfenstein. Смутно припоминая, что «кажется, игра была неплохая», я решил запустить ее под Linux. Ну так, не сколько чтобы поиграть, а больше покопаться. Тем более, что начались майские праздники, появилось свободное время.

image

Swift: решето Эратосфена

Reading time1 min
Views5K
Это будет совсем небольшая публикация, на которую меня вдохновила эта статья. Нет, я не собираюсь соревноваться с предложенным там решением (разве что в краткости), но, может быть, как демонстрация возможностей Swift, она будет интересна хабрасообществу.
Читать дальше →

Отсеиваем простые из миллиарда чисел быстрее, чем в Википедии

Reading time4 min
Views16K
(Источник рисунка )

Общеизвестно, что Решето Эратосфена (РЭ) один из древнейших алгоритмов, появившийся задолго до изобретения компьютеров. Поэтому можно подумать, что за века этот алгоритм изучен вдоль и поперек и добавить к нему ничего невозможно. Если посмотреть Википедию – там море ссылок на авторитетные источники, в которых запросто утонуть. Поэтому удивился, когда на днях случайно обнаружил, что вариант, который в Википедии преподносится как оптимальный, можно заметно оптимизировать.
Читать дальше →

Windows 10 версия 1903 — минимум 32 ГБ дискового пространства

Reading time1 min
Views64K


В Microsoft изменили требования к объему устройства хранения для установки операционной системы.

Теперь, в Windows 10, начиная с версии 1903 (это обновление ожидается в мае 2019 г.), минимально необходимый для функционирования операционной системы объем свободного дискового пространства составляет не менее 32 ГБ для 32- и 64-разрядных версий.
Читать дальше →

Когнитивное выпрямление: сеанс иллюзий с полным разоблачением

Reading time8 min
Views32K


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

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

Фибоначчи на собеседовании

Reading time8 min
Views129K
Вычисление ряда Фибоначчи — это классическая алгоритмическая задача, потому её нередко дают на собеседованиях, когда хотят проверить, что кандидат в принципе хоть как-то умеет в алгоритмы. Предположим, вы тот самый кандидат. Вам дали задание: на языке JavaScript написать функцию fib(n), возвращающую энное число Фибоначчи. Считаем, что нулевое число Фибоначчи — это нуль. Проверка корректности аргумента не требуется. Какие у вас есть варианты?

image
Выбирай мудро

Пятничный JS: квайн, который играет в крестики-нолики

Reading time6 min
Views7.1K
Приветствую всех в своей традиционной рубрике, полной лавкрафтианского безумия.

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

Так вот, я задумался над тем, что квайн, в принципе, может нести произвольную полезную нагрузку. То есть — делать ещё что угодно помимо своей основной функции. И в качестве proof-of-concept я решил написать квайн, который играет в крестики-нолики. И написал. Грязные подробности под катом.

image
Но как он может делать что-то ещё, кроме вывода своего текста?

О книге Боба Мартина «Чистый код»

Reading time5 min
Views214K

(Картинка без намека, просто уж очень хотелось котика в статью добавить! Ведь это основной залог популярности в интернетах, правда? :))

У меня очень неоднозначное отношение к книгам Роберта Мартина… В них довольно много здравых и интересных мыслей, но иногда они выражаются столь категорично, что неокрепшим программерским мозгом они могут восприниматься неправильно. Если же мозг читателя достаточно окреп, чтобы воспринимать советы прагматично, то есть все шансы, что ничего нового из этих советов он (мозг или программист) не вынесет.
Читать дальше →

Разработка hexapod с нуля (часть 5) — электроника

Reading time4 min
Views17K

WARNING: Данная статья устарела и носит исключительно исторический характер!

Всем привет! Разработка гексапода близится к завершению первой боевой версии и вот настало время для описания всей его электронной начинки. Так же я добавил HC-SR04 для обнаружения препятствий, которого так не хватало для визуальной удовлетворенности во внешнем виде гексапода. Будет немного нового видео и у Вас есть шанс меня отпинать по электронике.

Этапы разработки:
Часть 1 — проектирование
Часть 2 — сборка
Часть 3 — кинематика
Часть 4 — математика траекторий и последовательности
Часть 5 — электроника
Часть 6 — переход на 3D печать
Часть 7 — новый корпус, прикладное ПО и протоколы общения
Часть 8 — улучшенная математика передвижения
Часть 9 — завершение версии 1.00
Читать дальше →

7 распространенных ошибок при использовании предлогов в английском языке и как их избежать

Reading time2 min
Views19K


В английском языке предлоги используются для того, чтобы связывать людей, объекты, время и места внутри предложении. Обычно это короткие слова вроде at, for, in, on и to, которые несмотря на свой размер играют важнейшую роль, и использовать их верно не всегда просто.

Я нашел интересный пост с разбором распространенных ошибок при использовании предлогов, и подготовил его адаптированный перевод.
Читать дальше →

Крестики-нолики: компилятор против человека — экстремальный метапрограмминг

Reading time34 min
Views24K
"- После Мятежа Галактическое Содружество наложило строгие ограничения на метафункции высшего порядка. И не только из соображений этики; их власти опасаются вообще всякого проявления мании величия..."
(из поисковой выдачи google)
Предлагаю Вам сыграть в крестики-нолики с компилятором. Для игры знания c++ не потребуются, достаточно наличия cmake, python и собственно компилятора c++ ( потянет даже такой древний как gcc-3.3 ). Python используется только для ввода данных пользователя, запуска компилятора после каждого хода, и скомпилированной программы для получения результата. Все вычисления (следующий ход, определение победителя или констатации ничьей) производятся на этапе компиляции, в run-time только вывод результата.
Итак, готовы сразиться с компилятором?

Фриланс и финансы: 5 способов расчета между заказчиком и фрилансером

Reading time7 min
Views22K


Оплата. Вопрос взаиморасчетов для фриланса стоит остро, каждая из сторон хочет себя обезопасить, ведь риски велики. Заказчик рискует потерять деньги, фрилансер рискует потерять время на работу и по сути тоже потерять деньги.

Как там вообще в этих ваших фрилансах обстоят дела с оплатой работы, как это работает?
Читать дальше →

Как играть в Speedgate, первый вид спорта, созданный AI

Reading time4 min
Views15K


Американское рекламное агентство AKQA представило спидгейт (speedgate) — первый вид спорта, правила которого созданы искусственным интеллектом. Алгоритм, написавший правила игры, основан на рекуррентной нейросети, которая обучалась на текстовой информации о 400 уже существующих видах спорта.

Китайский протокол AIBUS и лабораторный химический реактор

Reading time4 min
Views3.9K
Приветствую Хабр! Когда-то давно я написал статью про реакционные ароматизаторы. Прошло много времени, я вернулся к этому вопросу.

В этой статье я не буду вдаваться в подробности технологии разработки реакционных ароматизаторов, а расскажу о моем опыте автоматизировать свое рабочее время и поделюсь кодом, который может кому пригодится. В руки мне попался лабораторный химический реактор китайского производства и к большому сожалению в нем отсутствовали инструменты по автоматизации охлаждения, считывания и записи данных, программирования режимов, что было очень важно. Сам реактор представлял из себя обычную металлическую болванку на штативе, с ТЭНом до 350 градусов. За контроль температуры отвечает контроллер Yudian AI518.


Читать дальше →

Там, где сходятся доказательства, факты и воображение

Reading time7 min
Views8.9K

В математике, где доказательство – это всё, важны также и факты. Однако факты хороши, только пока хороша модель, а построение моделей – занятие ненадёжное. Так какого количества фактов будет достаточно?




Можете ли вы найти следующее число в последовательности?

1, 2, 4, 8

Вот вам ещё одно число, если вам нужно больше данных для того, чтобы принять решение:

1, 2, 4, 8, 16

Следующим числом должно быть 32, не так ли? Закономерность ясна: чтобы найти следующее число, нужно удвоить предыдущее. 1 × 2 = 2; 2 × 2 = 4; 4 × 2 = 8; 8 × 2 = 16. Значит, следующее число должно быть 16 × 2 = 32. Сколько ещё фактов нужно для подтверждения этого?
Читать дальше →

Что такое гейзенбаг: история термина и примеры

Reading time4 min
Views15K
Это — справочный материал о гейзенбагах. Говорим о том, как они выглядят и какое отношение имеют к мейнфреймам — прародителям облака.


/ фото Lars Zimmermann CC BY

Heisenbug (гейзенбаг или хайзенбаг) — термин, описывающий ошибки, которые меняют свойства во время отладки кода. То есть они исчезают при тестировании и дебаггинге, но проявляются в продакшене.
Читать дальше →

Код живой и мёртвый. Часть первая. Объекты

Reading time7 min
Views14K

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


И вместе с этим мы видим повсеместную эпидемию менеджеров, хелперов, сервисов, контроллеров, селекторов, адаптеров, геттеров, сеттеров и другой нечисти: всё это мёртвый код. Он сковывает и загромождает.


Бороться предлагаю вот как: нужно представлять программы как текст на естественном языке и оценивать их соответственно. Как это и что получается — в статье.

Читать дальше →

Information

Rating
Does not participate
Registered
Activity