Source Code
201 subscribers
30 photos
3 files
80 links
Download Telegram
​​#data_structures #general
Связные списки (Linked List)

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

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

Основные операции в связном списке включают добавление, удаление и поиск элемента в списке.
​​#data_structures #general
Стеки (Stack)

Стек — это базовая структура данных, которая позволяет добавлять или удалять элементы только в её начале. Она похожа на стопку книг: если вы хотите взглянуть на книгу в середине стека, сперва придется убрать лежащие сверху.

Стек организован по принципу LIFO (Last In First Out, «последним пришёл — первым вышел») . Это значит, что последний элемент, который вы добавили в стек, первым выйдет из него.

В стеках можно выполнять три операции: добавление элемента (push), удаление элемента (pop) и отображение содержимого стека (pip).
​​#data_structures #general
Очереди (Queues)

Эту структуру можно представить как очередь в продуктовом магазине. Первым обслуживают того, кто пришёл в самом начале — всё как в жизни.

Очередь устроена по принципу FIFO (First In First Out, «первый пришёл — первый вышел»). Это значит, что удалить элемент можно только после того, как были убраны все ранее добавленные элементы.

Очередь позволяет выполнять две основных операции: добавлять элементы в конец очереди (enqueue) и удалять первый элемент (dequeue).
​​#data_structures #general
Множества (Sets)

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

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

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

Разность выводит список элементов, которые есть в одном множестве, но отсутствуют в другом.

Подмножество выдает булево значение, которое показывает, включает ли одно множество все элементы другого множества.
​​#data_structures #general
Карта (Map)

Map — это структура, которая хранит данные в парах ключ/значение, где каждый ключ уникален. Иногда её также называют ассоциативным массивом или словарём. Map часто используют для быстрого поиска данных. Она позволяет делать следующие вещи:

добавлять пары в коллекцию;

удалять пары из коллекции;

изменять существующей пары;

искать значение, связанное с определенным ключом.
#general

Однобуквенные языки программирования. Часть І

*Если интересна вторая часть, то проявите активность

А
Язык программирования A+ является потомком APL, как и другие языки на этой странице, потому что сообщество APL любит однобуквенные имена. Артур Уитни (создатель многих диалектов APL) создал A, затем Морган Стенли расширил его до A+.

B
Язык программирования B является предшественником C и в наши дни больше не используется.

C
Нет необходимости представлять C. Мы также можем считать C++ и C #, поскольку разрешены небуквенные и нецифровые символы.

D
D — это улучшенный C++. Если у вас есть возможность выбирать языки, считайте это рекомендацией проверить D!

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

Существует также Amiga E, который часто называли просто E. Воутер ван Оортмерссен задумывал его как язык сценариев для игр и описывает его как «огромный успех, он стал одним из самых популярных языков программирования на amiga.» Он доступен как бесплатная программа.

F
F# относительно хорошо известен. По сути, O'Caml портировали на .NET.

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

F* — это функциональный язык программирования типа ML, предназначенный для проверки программ. Основным текущим вариантом использования F* является создание проверенной и удобной замены всего стека HTTPS.

G
G-код также называется языком программирования G, поэтому он подходит. Язык программирования устройств с числовым программным управлением (ЧПУ). Похоже на ассемблеры.

Внутри LabView есть настоящий язык программирования G. Это язык графического потока данных.

H
H — текстовый язык со слабой типизацией. О нём известно не так много.

Есть еще один H, который не менее полезен. H не является продуктивным инструментом. Вы не можете создать ничего полезного с помощью H.

I
I — это язык, вдохновленный J, который хочет расширить фокус с массивов на большее количество структур данных.

J
J — еще один потомок APL и, вероятно, самый популярный. Например, в Rosetta Code J — один из наиболее популярных языков.

K
K — один из главных потомков APL Артура Уитни. Это коммерческий продукт, используемый в банках для финансирования и торговли.

L
L был языком, который дал синтаксис C для TCL.
L является братом E по HP Labs. L — это подмножество Common Lisp.

L — это теоретический язык в книге «Вычислимость, сложность и языки: основы теоретической информатики».

M
Язык M был изобретен Французским Управлением государственных финансов (DGFiP), эквивалентным IRS, для преобразования налогового кода в машиночитаемые инструкции. Это небольшой предметно-ориентированный язык, основанный на объявлениях переменных и арифметических операциях. Реверс-инжиниринг компилятора доступен здесь.

N
Из запейволленой публикации 1989 года:
Ожидая в ближайшем будущем широкого использования алгоритмов нейронных сетей, наша цель — получить полную среду разработки программного обеспечения для программирования и тестирования новых приложений. Мы намерены создать язык высокого уровня для спецификации нейронных сетей как часть такой среды.