Pull to refresh
56
10.9
Вадим Румянцев @vadimr

Разработчик аппаратно-программных комплексов

Send message

Gambit Scheme: интегрируемся с Python

Level of difficultyMedium
Reading time7 min
Views1.8K

Статья продолжает рассмотрение неочевидных возможностей Gambit Scheme, начатое в предыдущих статьях.

На этот раз расскажем о том, как использовать в программах на Gambit Scheme код на языке Python, в том числе многочисленные библиотеки, разработанные для Python.

Читать далее

Gambit Scheme: переопределяем формат вывода u8vector

Level of difficultyMedium
Reading time6 min
Views665

Продолжим рассмотрение неочевидных поучительных возможностей программирования на Gambit Scheme, начатое в предыдущих статьях.

На этот раз займёмся пристойной печатью значений типа u8vector, то есть массивов байтов.

Значения такого типа используются в Gambit Scheme везде, где нам нужно работать с представлением памяти компьютера на нижнем уровне. В частности, такими значениями представляются неформатированные пакеты UDP, отправляемые и получаемые по сети.

Читать далее

Семь способов выхода из рекурсии

Level of difficultyMedium
Reading time5 min
Views3.1K

Попробуем написать разными способами программу, реализующую циклическое вычисление, заключающееся в печати последовательных чисел от n1 до n2. Предметом нашего внимания будет способ завершения цикла. Поскольку для иллюстрации мы будем использовать язык Scheme, как один из наиболее концептуальных в области теории вычислений, то для реализации цикла используем рекурсию, как единственный циклический механизм в этом языке. Впрочем, для большинства наших способов мы будем указывать на аналоги в других языках, предполагающие использование императивных операторов цикла.

Читать далее

Gambit Scheme: проверяем, определён ли атом

Level of difficultyMedium
Reading time3 min
Views653

Одной из особенностей языка Scheme, в отличие от многих других динамических языков и «взрослых» диалектов Лиспа, является лексическая область видимости идентификаторов (как в классических компилируемых языках). С одной стороны, это удобно для статического анализа кода программы и особенно удобно для компиляции. С другой стороны, это затрудняет непосредственные операции с лексическим окружением.

Одной из самых проблематичных операций, реализацию которой затрудняет идеология Scheme, является стандартная для ряда диалектов форма is-bound?, предназначенная для проверки, определён ли её аргумент, то есть занесён ли он в системный ассоциативный список атомов и, как следствие, имеет ли он вообще какое-либо значение. Рассмотрим, как мы можем реализовать данную форму в Gambit Scheme.

Читать далее

Gambit Scheme: переопределяем скобки

Level of difficultyEasy
Reading time3 min
Views506

Рассмотрим недавно вошедшую в Gambit Scheme возможность по переопределению семантики скобок.

Gambit Scheme – используемый автором диалект Scheme, имеющий очень быстрый интерпретатор и компилятор с рядом полезных расширений, которые могут быть построены из исходного кода без внешних зависимостей, а также в полной мере поддерживают интернациональные символы UTF-8.

Читать далее

Задача о банкомате

Level of difficultyMedium
Reading time12 min
Views17K

Рассмотрим одну задачу, которая на leetcode маркирована как "medium", хотя на самом деле это невероятно сложная задача. Примечательна она тем, что допускает в разной степени оптимальные решения, самые упрощённые из которых действительно весьма просты, а самые оптимальные ещё не найдены современной наукой. В этой задаче ценно то, что на её примере можно изучать целый ряд техник программирования.

Читать далее

Почему Scheme?

Level of difficultyMedium
Reading time5 min
Views7.3K

Введение

Язык Scheme (произносится "ским"), которому в следующем году исполняется 50 лет, является языком программирования, занимающим необычное место среди прочих. Это язык, который гораздо больше изучают, чем потом на нём пишут. Скорее это язык для развития ума программиста, чем для написания коммерческого кода, хотя и примеры использования Scheme в коммерческой разработке тоже встречаются. На мой личный взгляд, Scheme идеален в качестве первого языка программирования в старшем школьном и институтском возрасте, а также идеально продолжает изучение Scratch в младших классах школы и Logo в средних классах.

Читать далее

Установка Linux на компьютер MSI Cubi

Level of difficultyEasy
Reading time1 min
Views3K

Возникла необходимость установить операционную систему на компьютер MSI Cubi N ADL-017BRU.

Сам компьютер представляет собой относительно тихий неттоп. К сожалению, разработчики, видимо, кроме изделий Microsoft ничего не видели, и установка Linux сталкивается с проблемой: дальше начальной стадии загрузки инсталлятора дело не идёт. В SLES дело заканчивается командной строкой GRUB, в Debian – графическим экраном инсталлятора, который не может найти дистрибутив.

Читать далее

Негативное свойство отрицательных чисел

Level of difficultyEasy
Reading time2 min
Views4.8K

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

Читать далее

Повышаем быстродействие расчётов на примере медианного фильтра

Level of difficultyMedium
Reading time6 min
Views2.7K
Рассмотрим некоторые приёмы повышения быстродействия вычислительных программ на примере алгоритма медианного фильтра.
Читать дальше →

Операции, функции и специальные формы в императивных языках программирования

Level of difficultyEasy
Reading time4 min
Views2K

В этой статье мы разъясним довольно тонкий семантический вопрос, который часто остаётся за кадром при изучении программирования на императивных языках.

Если читатель владеет одним из языков семейства Лисп (Common Lisp, Scheme, Clojure и т.д.), а в особенности если читал SICP, то ему излагаемый вопрос не в новинку, и он может пропустить эту статью. Если читатель использует Хаскель или другой язык, основанный на модели ленивых вычислений, то там всё немножко по-другому, и впрямую изложение материала в данной статье к таким языкам не относится, хотя фундаментальные принципы в основе лежат те же.

Читать далее

Настройка распределённого выполнения параллельных программ в кластере

Level of difficultyMedium
Reading time9 min
Views1.9K

В предыдущей публикации Фортран: пишем параллельные программы для суперкомпьютера мы рассмотрели общий подход к программированию в массивно-паралллельной архитектуре (MPP) с использованием языка Фортран-2018 и дали пример запуска массивно-параллельной программы на одной машине с многоядерным процессором. В настоящей статье мы рассмотрим запуск массивно-параллельных программ на кластере высокой производительности (HPC) или кластере высокой готовности (HA). Код в данной статье пишется на языке Фортран-2018 с использованием комассивов (coarrays) и преобразуется компилятором Фортрана в вызовы фреймворка MPI.

Читать далее

Об одной тестовой задаче

Level of difficultyMedium
Reading time5 min
Views9.7K

Недавно Youtube (*сайт, нарушающий закон РФ) порекомендовал мне любопытный с различных сторон видеоролик. В нём рассматривалась задача, которую, по словам автора, задают на собеседовании при приёме на работу в Apple.

Читать далее

Язык PL/I: десять тонн синтаксического сахара

Level of difficultyEasy
Reading time17 min
Views15K

Данный обзор посвящён чрезвычайно популярному в прошлом, но практически полностью забытому в настоящее время языку программирования PL/I. Между тем, многие свойства этого языка, на наш взгляд, заслуживают изучения и наше время, так как часть их периодически переизобретается различными авторами, причём часто в ухудшенном виде.

Читать далее

Фортран: пишем параллельные программы для суперкомпьютера

Level of difficultyMedium
Reading time10 min
Views3.5K

В первой части статьи мы рассмотрели написание на современном Фортране простой программы, реализующей клеточный автомат "Жизнь", в виде классического последовательного кода (SISD), матричных операций (SIMD) и параллельных конструкций SMP (SIMD с частью функций MIMD). Сейчас мы будем рассматривать использование конструкций Фортрана для программирования массивно-параллельных архитектур (MPP), к которым, в частности, относятся современные суперкомпьютеры. Такие архитектуры реализуют классическую схему MIMD.

Читать далее

Фортран: пишем параллельные программы

Level of difficultyMedium
Reading time9 min
Views12K

В этой статье мы попробуем написать простейшую параллелизуемую программу на языке Фортран, используя для этого методы конвейеризации и симметричной параллелизации и сравним их между собой, применив наиболее популярные компиляторы GNU Fortran и Intel Fortran.

Читать далее

К 70-летию Фортрана. Историческая справка. Часть II

Level of difficultyEasy
Reading time10 min
Views4.3K

Как отмечалось в первой части, условно эволюцию языка Фортран можно разделить на классический период (Фортран I – Фортран IV), когда ведущую роль в разработке занимала фирма IBM, язык абсолютно доминировал среди программистов (особенно в США) и сохранял значительную преемственность с самой первой версией; и современный период (Фортран 90 – Фортран 2018), когда разработка велась в основном ISO, синтаксис и семантика языка были значительно осовременены, но, несмотря на это, язык был уже вытеснен на периферию инструментальных средств. Версия Фортран 77 занимает промежуточное положение между этими периодами.

Читать далее

К 70-летию Фортрана. Историческая справка. Часть I

Level of difficultyEasy
Reading time13 min
Views7.8K

В 2023 году исполняется 70 лет с того момента, как Джон Бэкус, сотрудник IBM, убедил начальство утвердить проект первого в мире языка программирования высокого уровня.

Читать далее

SLES 15 и невозможность загрузки ядра Xen

Level of difficultyEasy
Reading time2 min
Views1.9K

Пришлось столкнуться с забавной ошибкой, по которой сходу не удалось найти никакой информации в интернете.

Проблема по первичным признакам такая. Грузится SUSE Linux Enterprise Server 15, доходит до меню загрузки GRUB. Далее, если выбрать обычное ядро, всё нормально, а если выбрать ядро для гипервизора Xen, то экран моргает и мы опять возвращаемся в меню. Запустить Xen невозможно никак.

Читать далее
1

Information

Rating
648-th
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity

Specialization

Specialist
Lead