Рубрика «Программирование» - 1038

Язык JavaScript был представлен как язык функционального программирования. Причина заключается в том, что функции в JS не просто разделяют логику на операционные блоки, функции являются объектами первого класса, способными создавать другие объекты. Подобная зависимость от функций одновременно является как сильной стороной, так и настоящим проклятием этого языка. Сильная сторона заключается в том, что язык, обладая подобными особенностями, становится легковесным и быстрым (каким JavaScript изначально и видели его создатели). Однако если вы не знаете что делаете — однозначно ждите беды.

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

Итак, существует четыре пути вызова функций:

  • Вызов метода — Method Invocation
  • Вызов функции — Function Invocation
  • Вызов конструктора — Constructor Invocation
  • Применить и вызвать — Apply And Call Invocation

Читать полностью »

Привет!

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

Зачем это может понадобиться — под катом. Читать полностью »

Здравствуйте!

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

Пишем эмулятор Gameboy, часть 1
Пишем эмулятор Gameboy, часть 2
Читать полностью »

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

Если интересны подробности: электрика/Интернет/отопление/водоснабжение с нуля — прошу под кат (сори, много фоток).

Читать полностью »

Совсем недавно мы отрелизили на hh.ru зарплатные кластеры, которые помогают оценить свою стоимость как специалиста. Это достаточно интересная и гибкая фича, такая, что с ее помощью даже можно провести небольшое исследование рынка труда, определив своё место в нем:

Как понять, сколько ты стоишь, или зарплатные кластеры в действии!
Читать полностью »

Надоело… Накипело и надоело. Не знаю как высказаться и поймёте ли вы о чём я, но всё же, не судите строго.
За всё что только не возьмись — всё хорошо, но «не совсем». Я не имею большого опыта, можно сказать, — junior — 1 год. Увлёкся программированием, а именно C++ — программированием. Да-да, именно «C++ — программирование». И с этого всё началось. Сначала чтение много чего, чтение днём и ночью: начиная с «C++ за 21 день» или чего-то в этом духе, заканчивая бандой четырёх и их модными паттернами.
Первое что приходило в голову — «Нет ничего сложного и когда говорят, что C++ сложный и запутанный — слишком сильно преувеличивают». Ну подумаешь, множественное наследование и проблема с неоднозначностью — так всё верно ж — виртуальное наследование, как минимум, тебе в руки. Всё и так давным давно написано умными людьми — осталось просто почитать и правильно понять. Что ж тут сложного?
Ага, почитал.
Читать полностью »

Наверное, многие C++-программисты слышали про мультиметоды и знают о том, что по сей день нет для этого языка приемлемой реализации: ни языковой поддержки, ни внешних библиотек. Есть кодогенераторы, выкрутасы через виртуальные методы, частный случай двойной диспетчеризации aka паттерн Посетитель (Visitor). Но ведь хочется просто реализовать несколько функций и указать: этот набор функций — есть мультиметод и точка.

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

Я решил попытать счастья, дерзнуть, предложить свое видение этой проблемы и способ ее решения. Получилась шаблонная библиотека на одних только заголовочниках.
Это реализация под стандарт C++03, на чистом C++: без каких-либо кодогенераторов и дополнений. Цель — библиотека с простым и понятным интерфейсом для реализации возможности перегружать функций по типу (и даже по значению) во время выполнения (это была программа минимум, в конечном итоге получилось еще много вкусностей).
Для тест-драйва необходимо скачать исходники, и сделать парочку #include.Читать полностью »

1. Особенности работы с переменными и литералами в Perl6
2. Perl6 — Операции над переменными, анонимные блоки
3. Perl6 — Условные операторы, циклы
4. Perl6 — Работа с функциями

Последние несколько дней я читал раздел по работе с объектами в Perl6. К сожалению я так и не смог понять некоторые моменты, и надеюсь что те кто уже смог их понять подскажут, в чем же дело. Как и раньше, все описанные возможности будут сопровождаться небольшими экспериментами или примерами, чтобы пояснить как это работает, или как нужно использовать.
Приступим:
Читать полностью »

Параллельные алгоритмы направлены на ускорение работы приложения за счет распределения задач на разные потоки. Такой подход действительно дает существенное преимущество перед линейным выполнением задач. Но в некоторых случая можно реально ускорить параллельный код!
Читать полностью »

Сниппет — это небольшой кусок кода, который программист многократно использует в своей практике.
Сам я сниппетами пользуюсь не так давно, но на практике оценил их пользу. Бывали ситуации, когда нужен был фрагмент кода который я писал недавно, но вспомнить где он находится я не мог. Выручал Интернет, но у меня же должны быть собственные наработки. Да и не зря же я так долго их собирал. После недолгих поисков нашлось несколько интересных специализированных сервисов как раз для сниппетов. И так эти сайты мне понравились, что я решил сделать что-то похожее или даже лучше :)
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js