Ксаверий, Терминус и языковые модели против кодировщиков
Прогнозам о вымирании профессии программиста чуть меньше лет, чем самой профессии...
Programming is thinking, not typing |
|
Прогнозам о вымирании профессии программиста чуть меньше лет, чем самой профессии...
Для тестирования кандидатов уровня техник-программист были нужны тесты. С одной стороны, достаточно простые и неспецифичные, чтобы не морочить человеку голову. С другой, достаточно сложные, чтобы понять, как человек думает. В итоге получились такие задачки. Вдруг кому-то будет полезным.
Задача 1. Табло бегущей справа налево строки вмещает до 20 символов. Сама …
В заметке "Пишем транслятор" я сетовал на ситуации, когда грамматику не впихнуть в LL(n). В частности, это оборачивается необходимостью поддерживать транзакционность (!) добавления имен в таблицы имен.
Например, есть правило типа
p1 -> condition ; statement1
p1 -> condition ; statement11 statement2
statement1 -> statement EOL
statement11 -> statement ;
statement2 -> statement EOL
где EOL - конец строки …
Моя текущая занятость связана с разработкой транслятора некоторого скриптового языка. По ряду причин имеющаяся реализация не может быть использована в других средах. В связи с этим вспомнился Фортран... Но, давайте уж все по порядку.
Скриптовый язык для описания бизнес-логики создавался программистами, не знакомыми с теорией формальных языков. Сей прискорбный факт …
В первую голову проблема касается продуктовых софтостроителей, хотя и в проектном тоже не все гладко.
Начнем с недавней истории. Технология COM (позднее, другие, но суть та же) дала возможность разработчикам компонентов отделить интерфейсы от реализаций. Для прикладных разработчиков это означало, например, что при обновлении компонентов старые интерфейсы продолжали бы работать …
Тестировал FreePascal/Lazarus на предмет пригодности к профессиональной разработке. В качестве теста взял простенькое приложение из 3 компонентов (1 исполняемый модуль и 2 DLL-ки по принципу плагинов) с несложной обработкой XML внутри. Выводы.
Продукт имеет немало продвинутой функциональности, главная из которой - компиляция и кросс-компияция под множество платформ, включая мобильные устройства …
Информация о дисковом пространстве, используемом таблицами текущей базы данных.
DECLARE @TableInfo TABLE (
table_name sysname,
row_count int,
reserved_size_kb nvarchar(50),
data_size_kb nvarchar(50),
index_size_kb nvarchar(50),
unused_size_kb nvarchar(50)
)
INSERT INTO @TableInfo
EXEC sp_MSforeachtable 'sp_spaceused ''?'''
UPDATE @TableInfo
SET
data_size_kb = replace(data_size_kb, 'KB', ''),
reserved_size_kb = replace(reserved_size_kb, 'KB', ''),
index_size_kb = replace(index_size_kb, 'KB', ''),
unused_size_kb …
Пример использования технологии представлен в статье "SQL и модульное тестирование".
Разработка серверного кода на процедурном расширении SQL имеет свои особенности. Во-первых, SQL - декларативный язык, и потому обычная для традиционного программирования функциональная декомпозиция зачастую является неэффективной. Во-вторых, SQL - специализированный язык манипуляции данными, и достичь наглядности и читаемости прикладного кода бывает …
Сюда складываю полезные функции и тонкие моменты при работе с датами на MS SQL Server.
BETWEEN - закрытый интервал, но будьте вимательны со временем в датах...
SELECT *
FROM (
SELECT '2008-02-03' AS d1
UNION
SELECT '2008-02-03 23:59:59' AS d1
UNION
SELECT '2008-02-04' AS d1
UNION
SELECT '2008-02-04 …
Воспользуемся псевдослучайной последовательностью на основе механизма проекций (view) для выборки случайной строки из таблицы.
Проекция rand2 выдает новое случайное число в поле rand_value. Для выборки строки создадим еще одну проекцию:
CREATE VIEW random_row
AS
WITH t1_rows AS (
SELECT id, row_number() OVER (order by id) as num FROM T1
)
SELECT id …