В функциональных языках программирования есть возможность генерировать бесконечные последовательности значений (как правило чисел) и оперировать этими последовательностями. Реализуется это функцией, которая, не прерывая свою работу, генерирует значения одно за другим на основе своего внутреннего состояния.
Но, к сожалению, в обычных языках нет возможности «вернуть» значения в место вызова не выходя из функции. Один вызов — один результат.
Генераторы удобно было бы использовать совместно с возможностью Delphi по перечислению значений (GetEnumerator/MoveNext/GetCurrent). В этой статье мы создадим функцию-генератор (может даже бесконечную) и будем использовать ее с таким объектом для перечисления, чтобы всё работало прозрачно без необходимости вникать в реализацию.
Читать полностью »
Рубрика «Delphi» - 23
Бесконечные генераторы значений на Delphi + Ассемблер
2012-11-07 в 17:20, admin, рубрики: Delphi, x64, Алгоритмы, ассемблер, генераторы, Программирование, функциональное программирование, метки: Delphi, x64, Алгоритмы, ассемблер, генераторы, функциональное программированиеПростая модель планировщика ОС
2012-10-12 в 15:12, admin, рубрики: Delphi, операционные системы, ОС, планировщик, метки: ОС, планировщикНе так давно пытался найти здесь какую-нибудь информацию о планировщике Windows и к своему удивлению не нашёл ничего конкретного о планировщиках вообще, поэтому решил запостить вот этот пример планировщика, надеюсь кому-то он окажется полезен. Код написан на Turbo Pascal со вставками ассемблера 8086.
Что собственно планирует планировщик?
Планировщик — часть операционной системы, которая отвечает за (псевдо)параллельное выполнения задач, потоков, процессов. Планировщик выделяет потокам процессорное время, память, стек и прочие ресурсы. Планировщик может принудительно забирать управление у потока (например по таймеру или при появлении потока с большим приоритетом), либо просто ожидать пока поток сам явно(вызовом некой системной процедуры) или неявно(по завершении) отдаст управление планировщику.
Первый вариант работы планировщика называется реальным или вытесняющим(preemptive), второй, соответственно, не вытесняющим (non-preemptive).
Читать полностью »
Embarcadero: нас не интересуют мелкие разработчики (по итогам «мирового турне»)
2012-10-12 в 14:48, admin, рубрики: DelphiС 1995-го года я программирую на Делфи, всегда всячески пропагандировал Делфи, в общем — ярый сторонник Делфи. Но, посетив «Мировое турне Ebarcadero» я пришел к выводу, что всем программистам нужно переучиваться с Делфи на Си. Потому, что Делфи — это все таки тупиковый путь. Много лет мне пытались доказать это противники Делфи. А удалось доказать людям, которые Делфи продвигают в массы.
Прежде всего: компания Ebarcadero не любит мелких разработчиков. Читать полностью »
О разработке небольшой игры с помощью Lazarus
2012-10-05 в 7:59, admin, рубрики: Delphi, game development, lazarus, open source, Программирование, метки: Delphi, lazarus, open source, без SMS После относительно недавнего релиза Lazarus 1.0, захотелось опробовать эту IDE на практике. Так появилась идея написать игру. Из основных требований — она должна быть несложной, с небольшими затратами времени на ее реализацию. Ну и конечно же, ее написание и сам геймплей должны быть достаточно увлекательными процессами, даже для меня как ее создателя.
Что ж, пожалуй лучшим способом добиться поставленных целей, являться высокий уровень случайности, что бы параметры и поведение игры было трудно точно спланировать. Ну и конечно спонтанность в разработке, когда наперед ничего конкретного не планируется.
Читать полностью »
Автообновление программы через MSSQL server
2012-09-26 в 8:23, admin, рубрики: Delphi, mssql, Песочница, метки: Delphi, mssql Дабы не бегать по своей работе к каждому человеку который использует мою программу разумно сделать автообновление, которое будет обновлять программу, если загрузить новую версию на сервер. Испробовав множество способов, нашел самый простой в использовании (хотя и не самый правильный)
Итак алгоритм:
- Программа при включении проверяет на сервере последнюю версию.
- Если на сервере выше текушей то скачиваем Zip-архив c программой.
- Переименовываем файл приложения на другое (ради бэкапа и доступности к файлу), например с program.exe на program.backup.
- Распаковываем архив заменяя файлы в папке.
- Удаляем архив с обновлением.
- Перезапускам программу.
Моя «парадигма» работы с потоками
2012-09-23 в 11:02, admin, рубрики: Delphi, параллельное программирование, потоки, Программирование, синхронизация, метки: Delphi, потоки, синхронизацияКогда я учился писать многопоточные приложения — я перечитал кучу литературы и справочной информации по этой области. Но между теорией и практикой — огромная пропасть. Я набил кучу шишек, и до сих пор иногда получаю по голове от собственных потоков. Для себя я выработал набор некоторых правил, которым стараюсь строго следовать, и это значительно помогает мне в написании многопоточного кода.
Поскольку ошибки, связанные с синхронизацией потоков крайне сложно отлаживать, то самым эффективным способом тут является предупреждение этих самых ошибок. Для этого используются различные парадигмы программирования на разных уровнях абстракции. Нижним уровнем абстракции будем считать работу с объектами синхронизации (критические секции, мьютексы, семафоры). Верхним — такие парадигмы программирования, как Futures and promises, STM (software transactional memory), обмен асинхронными сообщениями и т.п. Верхний уровень абстракции зачастую всегда основан на нижнем.
В данной статье я поделюсь своим стилем написания кода на нижнем уровне абстракции. Поскольку я дельфист, то все примеры будут на Delphi, однако все нижесказанное справедливо и для других языков программирования (позволяющих работать с объектами синхронизации конечно)
Читать полностью »
Запуск Delphi XE3 и RAD Studio XE3 в Петербурге, Москве и онлайн
2012-09-10 в 16:43, admin, рубрики: Delphi, Delphi XE3, RAD Studio XE3, день программиста, метки: Delphi XE3, RAD Studio XE3, день программиста
11 сентября в Санкт-Петербурге и 12 сентября, в День Программиста, в Москве состоится мероприятие Embarcadero, посвященное выходу новой Delphi XE3 и RAD Studio XE3. Участие в мероприятие бесплатное, зарегистрироваться можно на softwarepeople.ru/delphi. Там же 12 сентября в 10 утра начнётся трансляция московского запуска.
В прямом эфире пройдут выступления Джона Томаса, который имеет отношение к созданию семейства продуктов RAD Studio и Всеволода Леонова, отвечающего за связи с разработчиками в России.
Читать полностью »
Обновление VirtualTreeView 5.01. Добавлена поддержка Delphi XE3, C++ Builder XE2
2012-09-10 в 6:08, admin, рубрики: Delphi, Delphi XE3, soft-gems, update, virtualtreeview, обновление, метки: Delphi, Delphi XE3, soft-gems, update, virtualtreeview, обновление
Обновление 5.01 вышло 3 дня назад, теперь VirtualTreeView поддерживает:
- Delphi XE3
- C++ Builder XE2!
Полный список изменений смотрите под катом.
Читать полностью »
Обновление VirtualTreeView 5.01
2012-09-10 в 6:08, admin, рубрики: Delphi, Delphi XE3, soft-gems, update, virtualtreeview, обновление, метки: Delphi, Delphi XE3, soft-gems, update, virtualtreeview, обновлениеОбновление 5.01 вышло 3 дня назад, теперь VirtualTreeView поддерживает:
- Delphi XE3
- C++ Builder XE2!
Полный список изменений смотрите под катом.
Читать полностью »
Lazarus как он есть
2012-09-06 в 15:42, admin, рубрики: Delphi, FPC, freepascal, lazarus, Pascal, Песочница, разработка, метки: FPC, freepascal, lazarus, PascalДовольно часто наше нежелание разбираться в вопросе и уверенность в собственной логике рождает неверные предположения. Эти предположения, высказанные как утверждения на публичной площадке, могут прочно осесть в чужих головах и сформировать ложные отрицательные представления.
Так в комментариях к недавней теме «Lazarus 1.0 увидел свет!» были высказаны некоторые неверные утверждения, а также задан ряд вопросов оставшихся без ответов. Являясь разработчиком Lazarus и FPC уже довольно продолжительное время, я могу и хочу дать ответ на большинство связанных с этими продуктами вопросов и развеять некоторые неверные предположения.
Утверждение: Размер исполняемых файлов оставляет желать лучшего. Виноват компилятор, компоновщик и др.
Читать полностью »