Обновить

Я пишу свой терминал с нуля, чтобы понять как работает компьютер

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели6.9K
Всего голосов 9: ↑8 и ↓1+9
Комментарии9

Комментарии 9

Автор путает терминал, эмулятор терминала и командную оболочку.

Программа, которую написал автор — это командная оболочка.

Хорошо что руками писал, а не с чатгопотой (надеюсь), уже плюс автору.

Спасибо! Да, старался передать свой опыт изучения. Рад, что чувствуется :)

Точно подмечено, спасибо! Это shell, а не терминал.
Буду точнее с терминологией в следующих статьях.

Грустно признавать, но это статья уровня:

10 let a=1

20 print a

30 a=a+1

40 goto 20

И возгласы "ого!! оно печатает числа!1" со ссылкой на обязательный гитхаб.

Я не хочу обидеть автора. Но в доинтернетное время такое делалось не только не в гитхабе, а часто в блокноте ручкой и даже в уме.

Чтобы познать уровень своего невежества по Даннингу-Крюгеру, зайдите на wasm.in или на Киберфорум, почитайте, постарайтесь понять, что приведенное в статье это дичайший хелловорд.

Да, Вы поймете, что не понимаете вообще ничего. Это минус. Но это и плюс - если интерес к предмету настоящий, а не попонтоваться "я написал статью на Хабр, время чтения 5 минут", то понимание того, что Вы не понимаете ничего, сподвигнет Вас изучать предмет дальше.

С Уважением.

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

На самом деле, настоящий терминал -- это отдельная железка, которую использует человек для работы с машиной:

Мужик сидит и что-то набирает на клавиатуре терминала; то, что он набирает, передаётся байт за байтом в машину (слева три шкафа -- это и есть машина); машина же, в свою очередь, байт за байтом передаёт на терминал символы и управляющие коды, образующие в итоге то, что человек видит на экране. У машины может быть несколько терминалов, и все они могут использоваться одновременно (собственно, в 60-80-е годы так обычно и бывало); терминалами не обязательно должны быть дисплеи с клавиатурами -- очень часто использовались телетайпы и пишущие машинки, хотя по мере распространения дисплеев они, конечно, выходили из употребления.

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

Я как-то пытался отследить по исходникам линукс ядра, как данные перемещаются из драйвера uart в line discipline, tty, а затем в приложение. В итоге не вышло, весьма запутанно оказалось. Вот и подумал, неужели эта статья реально описывает терминал с нуля? Ан нет (

Вы правы — название вводит в заблуждение. Это userspace shell,
а не TTY subsystem. Тема с line discipline интригует, но пока
не на том уровне. Спасибо за уточнение!

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации