Я начал свой путь в программировании с изучения основ JavaScript в Codecademy. Мне не потребовалось много времени, чтобы понять, что я буду программировать всю оставшуюся жизнь. После создания нескольких базовых веб-приложений на JavaScript мое любопытство возросло. Я постоянно жаждал новых знаний.

Я посмотрел документальный фильм о разработке операционной системы Linux и был поражен тем, насколько эта технология произвела революцию в Интернете. Проведя еще несколько исследований, я узнал, что большая часть ядра Linux написана на языке программирования C. В то время я думал о C как об архаичном языке, который использовался только в программах, выпущенных до 1995 года. Хотя C может быть более старым языком по сравнению с некоторыми современными веб-языками, я быстро понял, что многие новые языки программирования основаны на язык С. Я решил, что изучение C будет полезно, независимо от того, в каком направлении пойдет моя карьера.

Я помню, как впервые реализовал связанный список в JavaScript. Мне было трудно понять это, потому что память и процессор казались далекими от кода, который я писал. Я решил написать связанный список на C, чтобы лучше понять, что происходит на металле.

Ниже приведены несколько основных моментов из моей реализации этого:

Наиболее важной частью этого было выделение памяти с помощью указателей. Все переменные и функции, объявленные звездочкой, являются указателями. Указатели — это переменные, которые содержат адрес памяти в качестве своего значения. В строке 9 я создаю указатель узла и выделяю ему память с помощью функции malloc. Значение, переданное в функцию malloc, указывает сколько памяти для выделения.

В строке 21 следующему свойству моего текущего узла назначается указатель узла. Другими словами, каждый узел указывает на фактический адрес памяти в машине. Этот код действительно представляет, как связанный список будет реализован в памяти. Я более уверен в своем понимании структур данных из-за моего опыта работы с C. Трудно достичь такого уровня понимания с помощью JavaScript. Полную реализацию можно посмотреть здесь.

Я люблю JavaScript и ценю то, что он сделал для веб-разработки в целом. Я также понимаю ценность изучения языка более низкого уровня, такого как C. В конце концов, весь наш код должен быть реализован на машинном уровне, даже если он сначала проходит через интерпретатор. Изучение C помогло мне лучше понять, что происходит на машинном уровне.