Как стать автором
Поиск
Написать публикацию
Обновить
1018.26

Программирование *

Искусство создания компьютерных программ

Сначала показывать
Порог рейтинга

16 сервисов для Создания Резюме и Профиля LinkedIn с использованием Искусственного Интеллекта.

  1. kickresume — На сайте лежат настоящие резюме людей, которых взяли, например, в Amazon. Используйте их в качестве шаблона.

  2. copy ai — Поможет создать резюме на нейросетях. Выберите шаблон «Resume», вбейте желаемую должность, напишите о себе в свободной форме, стиль текста профессиональный и вы получите четкое описание ваших навыков разбитых по пунктам.

  3. enhancv — Более 1000 примеров резюме.

  4. HyreSnap — Бесплатный конструктор резюме на основе искусственного интеллекта. ИИ сделает ваше резюме максимально совместимым с описаниями вакансий.

  5. resumestar io — онлайн-редактор создает современные одностраничные резюме.

  6. skillroads — Конструктор резюме на базе искусственного интеллекта. ИИ знает, какие навыки необходимо добавить и какой опыт выделить.

  7. hiration — Сервис оценит текущее резюме и сопроводительное письмо и предложит изменения.

  8. resumA.I. — Напишет и отредактирует пункты резюме с помощью ChatGPT.

  9. thisresumedoesnotexist — 1000 примеров AI резюме (на базе enhancv).

    Часть 2. Продолжение

Теги:
Всего голосов 4: ↑3 и ↓1+2
Комментарии1

У меня есть студент колледжа, которому я иногда помогаю. Вчера он попросил пройти с ним задание колледжа. Язык - C, тема - работа с памятью, массивы, структуры. В задании дан task.h файл с описанием используемых структур и функций с именами, говорящими сами за себя, которые и надо реализовать в соответствующем task.c файле.

Открыл он task.c в VS Code, после объявления первой функции набрал открывающую скобочку и нажал enter. Codeium написал первую строку, - раньше мы занимались JavaScript, и я ему посоветовал его поставить. Правильно. Он нажимает tab, снова enter, - опять правильно. Короче, 95% кода он протаббил, причем, самый сложный код (работа с памятью). Немного сам поменял логику где надо только.

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

Минуты две мы это переваривали на уровне: "Он нас слышит". Потом я вспомнил, что этот же тест давался в колледже и год назад, а может и ранее, и, скорей всего, информация о нем есть в интернете, хотя прямых упоминаний я ненагуглил. Так что, и слышит, и видит, и знает.

Короче, чувства от всего этого очень противоречивые. Как бы не оказалось от Codeium вреда больше, чем пользы в этом случае.

Теги:
Всего голосов 4: ↑3 и ↓1+2
Комментарии0

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

Playground screenshot
Playground screenshot

Кроме плейграунда работает локальная демка для Windows и Linux/x84-64 и сборка из исходников (ARM64).

Контекст: Экспериментальный язык Аргентум:

  • безопасный: memory safe, type safe, null-safe, array-index-safe..., не имеет небезопасных кастов, unsafe режима или взлома через рефлексию,

  • быстрый и компактный (не требует виртуальных машин и фреймворков, исполняемые файлы измеряются килобайтами),

  • автоматически удаляет объекты в предсказуемые моменты времени (что позволяет котролировать не только память, но и другие ресурсы),

  • в отличие от Раста и Свифта - гарантирует отсутствие утечек памяти,

  • в отличие от Go, Java, Kotlin, JS, Python - не использует сборщик мусора, поэтому приложения не имеют спорадических пауз и не страдают перерасходом памяти и процессорного времени,

  • в отличие от вышеперечисленных языков имеет поддержку многопоточности без дедлоков и гонок и не использует атомарные счетчики,

  • во время компиляции детектит нарушения инвариантов композиции и агрегации в иерархиях объектов,

  • может напрямую вызывать Си-код и грабить корованы.

Детали: https://aglang.org/

Теги:
Всего голосов 12: ↑12 и ↓0+12
Комментарии28

Опубликован релиз языка программирования общего назначения Rust 1.76, основанного проектом Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации Rust Foundation.

Rust сфокусирован на безопасной работе с памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки).

Методы работы с памятью в Rust избавляют разработчика от ошибок при манипулировании указателями и защищают от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo. Для размещения библиотек поддерживается репозиторий crates.io.

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

Релиз Rust 1.75 состоялся в конце декабря 2023 года.

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Полезные библиотеки Python список из более 100 мини - проектов⁠⁠

Всем привет! Хочу поделиться интересным сборником проектов от уровня "Hello World" до создания ботов WhatsApp.

Python-Mini-Projects — большой сборник(более 100) мини проектов на Python, подойдет как новичкам так и программистам с опытом.

На основе мини проектов можно делать свои более серьезные проекты или дорабатывать код))

Список всех мини программ сборника - клик

Сcылка на GitHub - клик

(Кстати если вы интересуетесь Python и хотите узнать больше об этом языке программирования, то приглашаю вас подписаться на мой канал! https://t.me/python_scrypt полезные материалы, уроки и новости из мира программирования)

Теги:
Всего голосов 10: ↑5 и ↓50
Комментарии0

Как внедрить телеметрию в on-premise-инфраструктуре

На предстоящий DevOpsConf 2024 выступлю с докладом по телеметрии и расскажу:
— Какие инструменты вам помогут в деле формирования, сбора, хранения и отображения данных телеметрии.
— Как выбрать тот или иной продукт и не наткнуться на несовместимость решений.
— Какой набор инструментов использовать, если вы работаете исключительно с on-premise инфраструктурой.
Материалы доклада помогут собрать решение для вашего случая.

Кому будет полезен доклад:
DevOps-инженерам и архитекторам.

Обо мне:
Ведущий DevOps-инженер Hilbert Team. Более 15 лет в IТ. Cоавтор курсов Yandex Cloud: «DevSecOps в облачном CI/CD», «Аутентификация и управление доступами», «Managed Service for ClickHouse», «Масштабирование нагрузки в K8s».

Если планируете посетить DevOpsConf, приходите 4 марта в 10:00 в Зал «Кейптаун».

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Как улучшить читаемость и информативность трассировки кода?

Используйте осмысленные имена переменных и функций: Понятные имена облегчают понимание назначения вашего кода. Это поможет определить причину исключения при чтении трассировки.

Разбивайте сложные функции: Если функция слишком большая и выполняет по факту несколько действий, то отследить ход её выполнения будет сложнее. Разделение функции на несколько даст возможность более точно обрабатывать и анализировать исключения.

Добавляйте комментарии, используйте docstring: Документируйте свой код с помощью комментариев и описания функции, чтобы обеспечить дополнительный контекст.

Обрабатывайте исключения на соответствующих уровнях: Отлавливайте исключения ближе к источнику ошибки — это сделает вывод более информативным с точным указанием места вызова исключения.

Пишите содержательные сообщения об ошибках: При вызове исключений старайтесь писать более информативные описания ошибки.

Используйте логирование: Модуль logging позволяет дополнять и форматировать информацию об исключениях в более структурированном и настраиваемом виде:

try:
    unknown_method()
except Exception as e:
    logging.error("Error occurred", exc_info=True)

Используйте модуль traceback: Этот модуль также содержит методы, позволяющие обрабатывать возникшие исключения и дополнительно форматировать вывод информации об ошибке. Примеры использования traceback.

Теги:
Всего голосов 5: ↑4 и ↓1+3
Комментарии0

В чём преимущество хэшируемых структур данных?

  • Быстрый поиск: хешированные структуры данных обеспечивают быстрое время поиска, обычно со средней временной сложностью O(1). Это происходит потому, что хэш-функция обеспечивает прямой доступ к местоположению нужного элемента в структуре данных, устраняя необходимость в последовательном поиске.

  • Эффективная вставка и удаление: Хешированные структуры данных также обеспечивают эффективные операции вставки и удаления. Хеш-функция позволяет быстро определить положение элемента, что делает эти операции более быстрыми по сравнению с нехешированными структурами данных, которые могут потребовать сдвига или перестановки элементов.

  • Работа с большими наборами данных: Хешированные структуры данных особенно полезны при работе с большими наборами данных. Постоянная временная сложность операций поиска, вставки и удаления обеспечивает постоянную производительность независимо от размера набора данных.

  • Уникальные ключи: Хешированные структуры данных идеально подходят для сценариев, в которых важна уникальность ключей. Хэш-функция обеспечивает сопоставление каждого ключа с уникальным местом в структуре данных, предотвращая коллизии и обеспечивая эффективный поиск.

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

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии1

Что такое «программирующая программа»?

Сегодня исходники программ выглядят как текст на английском языке со специфическими конструкциями, но так было не всегда. Первые программы писали в машинных кодах, и это было невероятно сложно. Требовалось детально знать архитектуру конкретной ЭВМ и пошагово представлять исполнение команд.

Переход от машинных кодов к языкам высокого уровня стал возможен благодаря разработке методов структурного представления алгоритмов и автоматизации самого процесса написания программ.

Одним из основоположников отечественной кибернетики и теоретического программирования был математик Алексей Андреевич Ляпунов. Ещё в начале пятидесятых годов прошлого века он предложил операторный метод описания программ и разработал теорию синтаксических программных структур.

Под руководством Алексея Ляпунова в 1954 году в Институте математики АН СССР был написан первый советский транслятор — ПП-1, или «программирующая программа номер 1». Она вызвала большой интерес со стороны высшего руководства страны и получила статус приоритетной разработки.

Уже в 1956 году на её базе создали «ПП-2» первый в мире транслятор с загрузчиком, отладчиком и библиотекой основных процедур. Он использовался на засекреченной ЭВМ «Стрела», установленной в Вычислительном центре Минобороны СССР.

Теги:
Всего голосов 4: ↑4 и ↓0+4
Комментарии1

Поделитесь с командой создателей Go своими отзывами о разработке с помощью этого языка программирования.

Опрос для разработчиков Go 2024 открыт, и мы хотим услышать ваше мнение!

С 2016 года данные опросов разработчиков Go помогают нам определять ключевые модели использования, понимать проблемы разработчиков, узнавать предпочтения в отношении инструментов и отслеживать новые тенденции в сообществе. Ваши отзывы очень важны для формирования будущего Go, поэтому, пожалуйста, уделите 10–15 минут, чтобы заполнить опрос до 11 февраля 2024 года. Примите участие в опросе прямо сейчас!

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

Теги:
Рейтинг0
Комментарии0

Лучшие бесплатные курсы по Python за прохождение которых вам дадут сертификат⁠⁠. Часть:2

Продолжение первого поста

Инди‑курс программирования на Python — курс представляет собой серию последовательных видеоуроков, где подробно и простым языком объясняется информация. После каждого урока Вас ждут практические задания, чтобы закрепить материал. Оценка: 4.9/5

Добрый, добрый Python — этот курс позволит вам изучить основы программирования на языке Python, начиная с самых азов и заканчивая довольно серьезными конструкциями. После каждого теоретического видеоурока вы найдете практические задания на закрепление пройденного материала. Курс рассчитан и на самых начинающих и для тех, кто уже знаком с Python, но хотел бы повысить, а заодно и проверить, свой уровень. Оценка: 4.9/5

Python в примерах и задачах — в курсе реализуется проблемно‑ориентированное обучение, когда минимальные теоретические аспекты программирования на Python предлагаются слушателю, только если этого потребует решаемая задача. Кроме того, в научно‑популярной форме объясняется физическая, математическая или экономическая суть каждой задачи. Оценка: 4.8/5

Python: основы и применение — курс посвящен базовым принципам языка Python и программирования в целом. Он хорошо подойдет тем, кто уже может писать простейшие программы на Python или тем, кто до этого программировал на других языках. Оценка: 4.7/5

Программирование на Python — курс посвящен базовым понятиям и элементам языка программирования Python

Всем удачи в разработке!

Теги:
Рейтинг0
Комментарии1

Лучшие бесплатные курсы по Python за прохождение которых вам дадут сертификат⁠⁠. Часть:1

Привет, друзья! Сегодня рассмотрим подборку курсов для любителей потешить свое эго сертификатами) ну или если представится возможность то показать вашему HRу прося повышение З.П.?

Постарался собрать бесплатные курсы с наибольшими положительными отзывами для начинающих и junior разработчиков, для первых это будет возможность попробовать себя в новой профессии для вторых - возможность освежить знания. (кстати Python community developers - авторский канал со всеми полезностями, советую подписаться)

Подборка курсов будет с платформы Stepik (кто не знает - это платформа для обучения, где размещены платные и бесплатные онлайн курсы а также на ней можно размещать свои курсы).

"Поколение Python": курс для начинающих - курс для начинающих знакомит школьников и всех, кому это интересно, с программированием. От себя добавлю что курс действительно очень подробный. Оценка: 5/5

"Поколение Python": курс для продвинутых - курс продолжает курс "Поколение Python: курс для начинающих" и рассказывает о дополнительных возможностях языка Python, а тренировочные задачи помогают закрепить каждую тему. Оценка: 5/5

Основы программирования на языке Python - курс знакомит с синтаксисом языка Python и базовыми алгоритмами, изучаемыми в средней и старшей школе. Оценка: 4.9/5

Продолжение в следующем посте

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии1

Критические расширения - классная и простая идея проектирования, которую я нашел в X.509

Расширение (не имени файла) - хороший способ сделать формат файла или протокола достаточно универсальным. Мы до сих пор пользуемся древними протоколами TCP, HTTP - потому что они расширяемы и поэтому пригодны и сейчас. В HTTP можно напихать любые хидеры, которые его создателям в страшном сне не приснились бы - и все будет работать! В идеальном мире, вы могли бы купить древнюю машинку с Win95 / Office 7.0 и открыть на нем современный документ. Да, лишившись всех новых плюшечек, но хотя бы смогли бы прочитать текст. (Жаль, разработчики Office 7.0 не читали этот пост).

Так вот, в X.509 (RFC 5280) (та самая PKI инфраструктура, на которой все держится, все вот эти вот SSL/TLS/сертификаты) тоже есть расширения. У каждого расширения - идентификатор (естественно, старые реализации не могут знать новые расширения), а еще, внимание - булевый флажок - critical. Всего 1 флаг, 1 бит, но дает огромные возможности! Мы из будущего можем сказать старой программе - либо "ты не знаешь это расширение, но не парься, просто проигнорь и обрабатывай остальное содержимое файла (или запроса) как раньше" либо же "если ты не знаешь, как обрабатывать это - даже не пытайся!". Это просто и удобнее чем версия файла-протокола (мол, если не совпадает - отказ, апгрейд, галя, отмена).

Удивительный способ, как одним битом создать канал для общения между прошлым и будущим, а ПО или устройство сделать условно вечно полезным.

Теги:
Всего голосов 5: ↑3 и ↓2+1
Комментарии1

Ближайшие события

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

Scrapscript лучше всего понимать с нескольких точек зрения:

  • «это JSON с типами, функциями и хешированными ссылками»;

  • «Это крошечный Haskell с чрезвычайной синтаксической согласованностью»;

  • «Это язык со странной особенностью IPFS».

Scrapscript решает проблему совместного использования программного обеспечения. Современное программное обеспечение ломает границы. API расходятся, пакеты разрушаются, конфигурации закостеневают, сериализация портится, git запутывается, зависимости ломаются, документация умирает, всплывают уязвимости и так далее.

Чтобы сделать программное обеспечение безопасным и доступным для совместного использования, Scrapscript сочетает в себе существующие знания по-новому: все выражения являются содержательно-адресуемыми «обрывками» все программы являются данными все программы «платформенные».

Эти простые решения в Scrapscript порождают новые парадигмы:

  • контентно-адресуемое всё;

  • всемирное совместное пространство имен;

  • никаких сломанных зависимостей;

  • управление версиями на уровне выражения.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии1

Откуда берётся мусор?

Рассмотрим следующую программу:

#include <stdio.h>
int main () {
  int a [100];
  int i;
  for (i=0; i<100; i++)
    printf ("%d ", a[i]);
  return 0;
}

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

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

Объяснение в стиле “потому что виртуальные адреса мапируются на реальные рандомно” я и сам могу дать, хочется более глубокого понимания. Компьютер – вещь детерминированная, в нём случайность – это не познанная закономерность.

Upd: ответ дан уважаемым @alexvangog в закреплённом комментарии.

Теги:
Всего голосов 4: ↑3 и ↓1+2
Комментарии13

Какой процент текста программы должны занимать комментарии? Комментировать каждую строку? или через одну? Каждая фирма, разрабатывающая программы испытывает прессинг со стороны программистов/кодеров, которые считают что:

  • в коде переменные и функции имеют значимые названия и поэтому ничего не надо комментировать

  • специалисту и так должно быть все понятно что тут написано

  • Я ко всем функциям и объектам дал пояснения. Этого вполне достаточно.

  • Всякие другие слова, которые объясняют почем комментировать не надо

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

Между ноль комментариев и комментарий к каждой строке лежат все промежуточные состояния.
На картинке ниже тексты от двух библиотек. Слева около 20 процентов комментов, а справа менее 5.
Обе библиотеки работают без проблем. Ну раз нет проблем, так зачем комменты?

Слева ADAFruit справа idiBus
Слева ADAFruit справа idiBus

Разработчик, который сдал готовый отлаженный код, не хочет тратить время на комменты. А я как заказчик текста, хотел бы иметь комментариями минимум 30 процентов текста. Чтобы я мог если надо быстро передать текст другому разработчику. Или на аутсорсинг. Или обновить код через 10 лет. Когда бывший разработчик давно будет хакером на Бали.

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

Теги:
Всего голосов 6: ↑3 и ↓30
Комментарии7

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

Здесь представлено простое решение, которое устранит утечки памяти в каждой программе на языке C. Используйте этот модуль с вашей программой, и утечки памяти останутся в прошлом.

#include <dlfcn.h>
#include <stdio.h>

struct leaksaver {
        struct leaksaver *next;
        void *pointer;
} *bigbucket;

void *
malloc(size_t len)
{
        static void *(*nextmalloc)(size_t);
        nextmalloc = dlsym(RTLD_NEXT, "malloc");
        void *ptr = nextmalloc(len);
        if (ptr) {
                struct leaksaver *saver = nextmalloc(sizeof(*saver));
                saver->pointer = ptr;
                saver->next = bigbucket;
                bigbucket = saver;
        }
        return ptr;

Пояснение автора кода в оригинале:

Every allocated pointer is saved in the big bucket, where it remains accessible. Even if no other references to the pointer exist in the program, the pointer has not leaked.

It is now entirely optional to call free. If you don’t call free, memory usage will increase over time, but technically, it’s not a leak. As an optimization, you may choose to call free to reduce memory, but again, strictly optional.

Problem sovled!

Теги:
Всего голосов 6: ↑3 и ↓30
Комментарии7

Что нужно учитывать, используя std::vector?

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

std::vector имеет:

  • [+] Доступ к произвольному элементу за O(1).

  • [-] Проблема: При превышении capacity - долгая вставка нового элемента (даже в конец), тербующая поэлементного копирования.

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

  • Хороший cache coherence:

    • [+] В общем случае это означает более быстрый обход контейнера vector по сравнению с контейнерами а-ля list (map, set, forward_list etc.).

    • [-] Проблема: В частности, нужно разбиратсья с cache sharing.
      Если vector параллельно обходят два потока и каждый из них модифицирует его содержимое, то вероятно кэши этих потоков будет смотеть на смежную область памяти vector-а. Тогда каждая из записей будет инвалидировать содержимое кеша ядра другого потока, тем самым приводя к регулярному refetch-у. В некоторых корнер кейсах замена vector на list может внезапно привести к улучшению перфоманса.

      Решение: Лечится такая проблема обычно увеличением размера элемента до размера кэшлайна. Либо же выдачей каждому потоку по N элементов, где (N * sizeof(ElementT)) == cacheline size.

Теги:
Всего голосов 4: ↑3 и ↓1+2
Комментарии6

Накрутка опыта и обман на собесах: подстроиться или остаться аутсайдером

Сейчас почти везде первый этап собеседований в FAANG-компании автономный, без интервьюера. То есть у тебя запускается таймер на несколько часов, на котором нельзя поставить паузу. И ты за это время решаешь 2-4 задачи в стиле LeetCode. Можно гуглить без проблем, но это не особо поможет, если не знаешь базу алгоритмов и не решил пару сотен задач с LeetCode. 

А дальше возникает мысль о возможности найти готовое решение с использованием ChatGPT. Ты можешь быть честным до конца и честно пытаться решить все своими силами. Но, в то же время другие кандидаты сделают это без угрызения совести и будут лучше тебя по рейтингу. 

Та же тема с накруткой опыта. Все поголовно поднимают себе опыт с 0 до 3 лет, с 2 лет до 5 лет и так далее. И я сижу со своими честно выстраданными 7 годами коммерческого опыта и жду когда меня вчерашние джуны обгонят по годам. Это привело к тому, что некоторые вакансии требуют 10 лет опыта, что просто неприлично много и часто даже невозможно, потому что часто программисты перестают кодить к этому времени, если по-честному. 

Что в итоге выбрать? Подстроиться под систему и быть на справедливом своем месте в этом рейтинге. Или быть честным с самим собой и надеяться что система сама выфильтрует лже-программистов ?

***

Подписывайтесь на мой телеграм-канал Вайтишная: пишу честно про IT и про свой опыт

Теги:
Всего голосов 7: ↑4 и ↓3+1
Комментарии12

Знаете, что такое Планкалкюль (Plankalkül)? Это один из первых языков программирования: на нём работал первый компьютер в Европе Z4.

Ранние ЭВМ не имели единой архитектуры и программировались с помощью машинного кода. Это был язык самого низкого уровня, уникальный для каждого компьютера.

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

В 1944 г. в качестве смелой идеи из области прикладной математики немецкий инженер Конрад Эрнест Отто Цузе написал первый универсальный язык программирования — Планкалкюль (Plankalkül), что в переводе означает «планируемые вычисления».

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

Первым устройством, на котором использовался Планкалкюль, был электромеханический компьютер Z4, наследовавший архитектуру своего предшественника — Z3.

Это первый пост из новой рубрики #ИЯП — история языков программирования.

Теги:
Всего голосов 15: ↑15 и ↓0+15
Комментарии0

Вклад авторов