Серия «Программирование»

Несколько интересных фактов про Динамическое программирование

Динамика - это искусство Разбивать задачи на части И решать их по порядку Сохраняя результаты.

Динамика - это мудрость Видеть оптимальность структуры И строить из подзадач путь К желанному решению.

Несколько интересных фактов про Динамическое программирование Программирование, IT, Программист, Алгоритм
  • Динамическое программирование было придумано Ричардом Беллманом в 1940-х годах для решения задач теории управления. Он выбрал это название, чтобы скрыть от своих начальников военное значение своих исследований, так как слово «динамическое» звучало впечатляюще.

  • Динамическое программирование широко используется в различных областях, таких как биоинформатика, криптография, компьютерная графика, компиляторы, игровая теория и многие другие3. Например, алгоритм Нидлмана-Вунша для выравнивания последовательностей ДНК и РНК основан на динамическом программировании.

  • Динамическое программирование может быть реализовано на C++ разными способами, в зависимости от типа задачи, структуры данных и требуемой эффективности. Например, можно использовать одномерные или многомерные массивы, векторы, хеш-таблицы, рекурсию с мемоизацией или итерацию с заполнением таблицы. Также можно применять различные техники оптимизации, такие как сжатие состояний, разбиение на подзадачи, отсечение лишних ветвей и т.д

Интересные факты и фичи языков программирования у нас в канале, заходи :)

Показать полностью
20

Все есть файл в Linux

В Linux все есть файл, потому что это упрощает работу с различными ресурсами системы, такими как устройства, ядро, сокеты и т.д. Вместо того, чтобы создавать отдельные интерфейсы для каждого типа ресурса, Linux использует общий интерфейс файловой системы, который позволяет открывать, читать, писать и закрывать файлы. Таким образом, любой ресурс можно представить как файл и работать с ним с помощью стандартных программ и API.

Все есть файл в Linux Программирование, Linux, IT, Программист

Файлы в Linux делятся на три основных типа:

  • Обыкновенные

  • Специальные

  • Директории

Обыкновенные файлы содержат данные, такие как текст, изображения, код и т.д.

Специальные файлы представляют собой интерфейсы к устройствам (блочные или символьные), к ядру (procfs или sysfs) или к другим процессам (сокеты или каналы).

Директории служат для группировки файлов по разным критериям и облегчения навигации по файловой системе.

Специальные файлы в Linux - это файлы, которые представляют собой интерфейсы к различным ресурсам системы, таким как устройства, ядро, сокеты и т.д. Они позволяют работать с этими ресурсами так же, как с обычными файлами, используя стандартные операции открытия, чтения, записи и закрытия.

Специальные файлы делятся на два основных типа:

  • Блочные

  • Символьные

Блочные файлы обеспечивают буферизованный доступ к аппаратным компонентам, таким как жесткие диски, съемные носители и т.д.

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

Некоторые интересные факты про специальные файлы в Linux:

  • Специальные файлы находятся в каталоге /dev (от англ. devices - устройства), который содержит интерфейсы работы с драйверами ядра.

  • Специальные файлы можно определить по первому символу в выводе команды ls -l. Блочные файлы обозначаются буквой b, символьные - буквой c.

  • Специальные файлы имеют два числа: основное (major) и дополнительное (minor), которые определяют тип устройства и его номер. Например, файл /dev/sda имеет основной номер 8 и дополнительный номер 0, что означает, что он представляет первый жесткий диск в системе.

  • Специальные файлы можно создавать с помощью команды mknod (от англ. make node - создать узел), которая принимает четыре аргумента: имя файла, тип файла (b или c), основной номер и дополнительный номер. Например, команда mknod /dev/mydevice c 10 20 создаст символьный файл с именем mydevice, основным номером 10 и дополнительным номером 20.

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

Интересные факты и фичи языков программирования у нас в канале, заходи :)

Показать полностью 1

История gRPC от Google до open source

gRPC - это система удаленного вызова процедур (RPC) с открытым исходным кодом, которая была разработана в Google в 2015 году. Она использует HTTP/2 в качестве транспортного протокола и Protocol Buffers в качестве языка описания интерфейса и формата данных. gRPC позволяет определить и реализовать четыре типа сервисных методов: унарный, серверный потоковый, клиентский потоковый и двунаправленный потоковый. gRPC также поддерживает различные функции, такие как аутентификация, сжатие, отмена, тайм-ауты и метаданные.

История gRPC от Google до open source Инновации, Технологии, IT, Программирование, Разработка, Web, Программист

История gRPC началась с разработки внутренней системы RPC в Google под названием Stubby. Stubby был создан для обеспечения высокопроизводительной и надежной связи между микросервисами в распределенных системах. Stubby использовал Protocol Buffers для сериализации данных и HTTP/2 для передачи данных. Stubby также предоставлял различные функции, такие как балансировка нагрузки, отказоустойчивость, трассировка, мониторинг и безопасность.

В 2015 году Google решил выложить Stubby в открытый доступ под новым названием gRPC. Целью этого шага было расширить использование RPC во внешних проектах и сообществах, а также сделать RPC более доступным и универсальным для разных языков программирования и платформ. Google также хотел продвигать стандартизацию и совместимость RPC между разными системами.

С тех пор gRPC получил широкое распространение и признание в индустрии. Он используется многими компаниями и организациями, такими как Netflix, Cisco, Square, IBM, Docker, CoreOS и другими. Он также поддерживает множество языков программирования, таких как C#, C++, Dart, Go, Java, Kotlin, Node.js, Objective-C, PHP, Python, Ruby и Swift. Он также имеет большое и активное сообщество разработчиков и пользователей на GitHub и других платформах.

Интересные факты и фичи языков программирования у нас в канале, заходи :)

Показать полностью
71

А ты лжец?

- Как называется человек, который знает все языки программирования?

- Полиглот?

- Нет, лжец.

1

Преимущество и недостатки контейнера set в С++

Контейнер set - это ассоциативный контейнер, который содержит отсортированный набор уникальных объектов типа Key. Сортировка выполняется с помощью функции сравнения ключей Compare. Операции поиска, удаления и вставки имеют логарифмическую сложность.

Преимущество и недостатки контейнера set в С++ Программирование, IT юмор, Программист, C++

Преимущества контейнера set:

  • Он гарантирует, что все элементы в нем уникальны, и повторения запрещены.

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

  • Он поддерживает операции над множествами, такие как объединение, пересечение, разность и симметрическая разность.

Недостатки контейнера set:

  • Он занимает больше памяти, чем другие контейнеры, такие как vector или list, так как он хранит не только значения, но и дополнительную информацию о структуре дерева.

  • Он не позволяет изменять значения элементов, так как это нарушит порядок сортировки. Для изменения значения нужно сначала удалить элемент, а потом вставить новый.

  • Он не поддерживает произвольный доступ к элементам по индексу, так как он не имеет последовательной структуры. Для доступа к элементам нужно использовать итераторы.

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

Интересные факты и фичи языков программирования у нас в канале, заходи :)

Показать полностью 1
16

Вспомним историю нашего любимого raspberry pi

Raspberry Pi - это одноплатный компьютер, который был разработан в Великобритании для обучения информатике и программированию. Он был представлен в 2011 году и с тех пор стал очень популярным среди любителей, ученых и художников.

Вспомним историю нашего любимого raspberry pi Raspberry pi, Программирование, IT, Электроника, Программист, Linux, Длиннопост

История Raspberry Pi началась в 2006 году, когда группа коллег из Кембриджского университета решила создать дешевый и простой компьютер, который бы мог заинтересовать детей и подростков. Они создали несколько прототипов на основе микроконтроллеров Atmel, но они были слишком сложными и ограниченными в возможностях. Позже они нашли подходящий чип от Broadcom, который имел достаточную мощность и графические возможности для запуска Linux и других операционных систем.

В 2009 году они основали фонд Raspberry Pi Foundation, чтобы продвигать свою идею и собирать средства для производства компьютеров. Они также выбрали название Raspberry Pi, которое отражало традицию называть компьютеры по фруктам (например, Apple, Apricot, Acorn) и сокращение Pi, которое обозначало Python - один из основных языков программирования для Raspberry Pi.

В 2012 году началась продажа первой партии Raspberry Pi модели B, которая имела процессор с частотой 700 МГц, 256 МБ оперативной памяти, два порта USB, порт Ethernet, видеовыходы HDMI и RCA, аудиовыход 3.5 мм и разъем для карты памяти SD. Стоимость компьютера составляла всего 35 долларов. Спрос на него был огромным, и сайты продавцов не выдержали наплыва посетителей.

С тех пор было выпущено несколько моделей Raspberry Pi с разными характеристиками и ценами. Самой дешевой моделью является Raspberry Pi Zero, которая стоит всего 5 долларов и имеет процессор с частотой 1 ГГц, 512 МБ оперативной памяти, один порт micro USB, видеовыход mini HDMI и разъем для карты памяти micro SD. Самой мощной моделью является Raspberry Pi 4 Model B, которая стоит 35-75 долларов в зависимости от объема оперативной памяти (от 1 до 8 ГБ), имеет процессор с частотой 1.5 ГГц, четыре порта USB (два из них типа C), два порта micro HDMI, порт Ethernet, аудиовыход 3.5 мм и разъем для карты памяти micro SD.

Вспомним историю нашего любимого raspberry pi Raspberry pi, Программирование, IT, Электроника, Программист, Linux, Длиннопост

Raspberry Pi Zero

По состоянию на конец 2019 года было продано более 30 миллионов устройств Raspberry Pi 1. Они используются для самых разных целей: обучения, развлечения, науки, искусства, робототехники, интернета вещей и многого другого. Raspberry Pi стал одним из самых известных и успешных мини-компьютеров в мире.

Интересные факты и фичи языков программирования у нас в канале, заходи :)

Показать полностью 2
4

Вспомним историю великого и могучего С++

Язык программирования C++ был создан в начале 1980-х годов Бьерном Страуструпом, который работал в компании Bell Laboratories. Он хотел расширить возможности языка C, добавив в него поддержку объектно-ориентированного и обобщённого программирования. Изначально язык назывался “C с классами” (C with Classes), но позже был переименован в C++ в 1983 году. Символ “++” означает операцию инкремента (увеличения на единицу) в языке C и символизирует развитие языка .

Вспомним историю великого и могучего С++ Программирование, C++, IT, Программист, История IT

С тех пор язык C++ постоянно эволюционировал и стандартизировался. В 1998 году был выпущен первый международный стандарт ISO/IEC 14882:1998, который определял основные правила и синтаксис языка. В 2003 году был выпущен второй стандарт ISO/IEC 14882:2003, который исправлял некоторые ошибки и неоднозначности первого стандарта. В 2011 году был выпущен третий стандарт ISO/IEC 14882:2011, который добавлял много новых возможностей, таких как автоматический вывод типов, лямбда-выражения, перемещающий семантику, умные указатели и другие. В 2014 году был выпущен четвертый стандарт ISO/IEC 14882:2014, который улучшал некоторые аспекты третьего стандарта и добавлял новые библиотеки. В 2017 году был выпущен пятый стандарт ISO/IEC 14882:2017, который расширял возможности языка и библиотек, например, добавляя поддержку параллельного и распределенного программирования. В 2020 году был выпущен шестой стандарт ISO/IEC 14882:2020, который также вводил множество новшеств, таких как модули, кортежи, концепты, корутинны и другие .

Язык C++ оказал большое влияние на другие языки программирования, такие как Java, C#, Python и другие. Язык C++ широко используется для разработки различных видов программного обеспечения, такого как операционные системы, приложения для настольных и мобильных устройств, игры, серверы, встраиваемые системы и другие. Язык C++ отличается высокой производительностью, эффективным использованием ресурсов, гибкостью и мощностью.

Интересные факты и фичи языков программирования у нас в канале, заходи :)

Показать полностью 1

Кто такой архитектор ПО и как им стать

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

Кто такой архитектор ПО и как им стать Программирование, Архитектура, Программист, IT, Проектирование

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

Чтобы стать архитектором в программировании, вам нужно иметь:

  • Глубокие знания в области программирования, включая разные языки, парадигмы, шаблоны, фреймворки и инструменты.

  • Опыт разработки сложных и крупномасштабных программных систем на разных этапах жизненного цикла.

  • Навыки анализа, проектирования, документирования и рефакторинга архитектуры ПО.

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

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

  • Желание постоянно учиться новому и следить за тенденциями в области программирования.

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

Интересные факты и фичи языков программирования у нас в канале, заходи :)

Показать полностью 1
Отличная работа, все прочитано!