Обновить
68
0.1
Иван Савватеев@SIISII

Микроконтроллеры, цифровая электроника, ОС…

Отправить сообщение

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

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

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

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

Да можно было написать, что работает, например, на 777 ЭГц...

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

На это я отвечу, что Вы -- лжец, поскольку я:

  • не "хейтю" высшее образование, а лишь утверждаю, что для большинства профессий оно не является обязательным -- причём не является обязательным именно формальное образование (диплом), а не наличие знаний и умений;

  • не утверждаю на основе своего опыта, что "всем остальным оно тоже не нужно" -- мой опыт лишь указывает на то, что оно не для всех обязательно (и замечу попутно, что Ваш опыт ровно такой же "крайне ограниченный субъективный", как и мой);

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

Так что это не у меня позиция неконструктивная, а Вы приписываете другим свои домыслы.

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

А вот у меня опыт близок к противоположному. Да, у тех, кто без диплома, зачастую хватает дыр -- но те из них, которые имеют живой интерес к самому делу (а не чисто к заработку), быстро навёрстывают недостающее, когда видят реальную в том необходимость. А дипломированные... Да, они нередко могут меня поучить высшей математике и куче другой теории, которую я либо забыл за отсутствием практической в ней необходимости, либо вообще не знал, но на практике зачастую самостоятельно ничего сложней условного Хелловорлда они сделать не в состоянии (а уж про сделать эффективно я вообще молчу) -- как раз потому, что изучали теорию без должного подкрепления практикой. Но да, ни с кем из вчерашних (а не 30-летней давности) выпускников МФТИ или Бауманки мне общаться не приходилось -- думается, среди них процент дипломированных идиотов будет поменьше, чем среди закончивших "обычные" вузы.

Заметьте, что Вы, по сути, как раз доказываете этим своим постом ненужность высшего образования в нынешнем его виде. Если "большинство студентов не осваивают даже 10% тех материалов" и "большинство студентов (да почти все 100%) совсем не заинтересованы в том, чтобы реально учиться ", зачем тогда вузы вообще нужны-то? И что это за преподаватели такие, которые "больше всего боятся хорошо подготовленных студентов, поскольку к занятиям с такими студентами приходится готовиться, изучать новое, быть готовым отвечать на сложные и каверзные вопросы"? Зачем нужно такое образование?

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

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

И тут мне стало все ясно. Жалеете сейчас по прошествии стольких лет, да?

Жалею лишь о том, что послушал мать и вообще пошёл в вуз.

Очень интересно, а кто или что научил Вас хотя бы читать, писать и считать?

Как утверждают мои родители, я научился читать сам в возрасте 3 лет, писать стал тоже сам -- жутко коряво, естественно, плюс довольно долго зеркалил И и Я (получая N и R). До школы, т.е. до семи лет, я уже успел прочитать довольно много всяких разных книжек, причём далеко не только художественных. Например, прочитал и отчасти даже понял книжку, где описывалось устройство автомобилей, и про всякие там токарные и фрезерные станки (с кинематическими схемами и т.д.), и по электротехнике. Минимально необходимую математику мне при нужде объяснял отец, так что к моменту поступления в первый класс я умел, например, считать и обычные, и десятичные дроби и оперировать числами в научной нотации ("с плавающей запятой") -- ну и пользоваться таблицами Брадиса для получения значений синусов-косинусов, хотя математический смысл их мне вряд ли был тогда понятен (по всяком случае, до конца понятен).

Электроникой стал заниматься с 6 лет -- купили мне "радиокубики", и понеслось. С программированием впервые столкнулся таки в школе, но не на уроках информатики, а на 2 года раньше -- у нас организовали кружок, и я туда пошёл, потому что было интересно. Но, поскольку вёл его электронщик, а не программист, дать он мог лишь основы -- Бейсик и всё такое, об остальном лишь имел определённое представление, так что ассемблер мне пришлось изучать самостоятельно по документации и методом научного тыка. Через два года этот кружок вёл уже я (а заодно работал, получая деньги, в одном проектном институте -- правда, числился оператором ЭВМ, а не программистом, поскольку занять в СССР инженерную должность без высшего образования было нельзя, а я ещё школьником был).

А Вы не думали о том, что будь у Вас законченное высшее образование, Вы могли бы достичь гораздо больших высот, чем сейчас?

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

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

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

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

Не предвидится, это точно. Но в том, что пользы не получил бы, уверен абсолютно.

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

Заметьте, что последнее можно повернуть наизнанку: высшее образование нахваливают те, кому, кроме как наличием диплома, похвастаться нечем. Лично я немало в жизни встречал дипломированных людей, ничего толком не соображающих по своей специальности -- хотя, естественно, встречал и противоположные примеры, в частности, своих родителей и старшего брата. И он, и отец закончили московский физтех, например; отец долго меня долбил за то, что я не хочу "учиться", и успокоился лишь тогда, когда увидел, что я пишу программы и быстрей, и качественней, чем дипломированные типа инженеры -- хотя математику нифига не знаю (ну, на его фоне я действительно её нифига не знаю).

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

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

Ну дык поскольку занимались более-менее реальным делом, а не чем-то там сферическим в вакууме. А преподавание, как правило, именно что "сферические". Скажем, как производные с интегралами в школе даются? Ну, есть вот такой математический изврат, а нафига он нам сдался? Как по мне, их надо вводить не в курсе алгебры, а в курсе физики -- да и вообще, алгебру как таковую в старших классах упразднить, ибо все продвинутые математические вещи нужны для обслуживания реальных задач, т.е., прежде всего, как раз физики, а не ради самих себя.

У ПК (в т.ч. и недоПК, естественно) по сравнению с "большими" машинами в плане обучения и развития есть ряд недостатков. В частности, поскольку ПК находится в твоём монопольном владении, нет нужды в какой-либо защите и организации совместной эксплуатации в интересах нескольких пользователей одновременно. Как правило, очень примитивен у них и ввод-вывод. Конечно, у современных ПК он намного более развит, чем, скажем, у PDP-11 -- но всё ж между ними порядка полувека, и то, что в 1970-е было уделом нескольких суперкомпьютеров, сейчас стоит чуть ли не в каждом утюге. А вот Спектрум по сравнению с той же PDP-11 -- крайне примитивная машинка, если говорить чисто про техническую сторону. Естественно, это никак не умаляет навыков тех, кто на них делали хорошие игры и т.п., но делает обучение и развитие достаточно однобоким.

А ограниченность ресурсов -- да, учит экономии, но это применимо и к другим машинам, даже если ресурсов у них уже вполне себе достаточно -- но зависит уже от самого учащегося. Например, я дико плевался от MS DOS (и плююсь до сих пор): однопользовательская однозадачная, а памяти под себя жрёт выше крыши (ещё и имея низкоуровневый ввод-вывод не внутри себя, а в BIOS). По функционалу с ней сравним, например, SJ-монитор (однозадачный) RT-11 для PDP-11 -- но сам он занимал 4 Кбайта ОЗУ и позволял работать на машине, на которой было от 16 Кбайт памяти; двухзадачный FB-монитор под себя жрал 8 Кбайт. RSX-11M (бабка Винды, между прочим) потребляла уже больше, в самом кастрированном варианте -- что-то вроде 16 Кбайт, в полном -- порядка 100 Кбайт под себя и все свои драйверы (никакого BIOS на PDPшках не было, а соответственно, весь код для управления устройствами входил в состав драйверов ОС), но это была уже полноценная многопользовательская многозадачная система с защитой пользователей друг от друга и всё такое прочее.

В общем, изучение подобных систем лично мне дало куда больше, чем может дать изучение современного Линуха, к примеру, особенно если этот Линух подаётся как нечто безальтернативное (типа, надо делать так и никак иначе) -- ну а вузы, насколько понимаю, в этом плане весьма и весьма однобоки.

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

Иногда так и хочется воскликнуть: "Это элементарно, Ватсон" :) Но у меня немного иной путь, чем у большинства других разработчиков -- что молодых, что примерно моего возраста (сейчас мне 53). Всё ж я рос на "настоящей" технике (СМ ЭВМ и ЕС ЭВМ -- советских аналогах буржуйских PDP-11 и System/360 и 370), а не на игрушечных недо-ПК вроде Спектрума или там Радио-86РК, а посему постоянно имел дело с многозадачными многопользовательскими ОС, причём писал, главным образом, на ассемблере, и много ковырялся в ядрах систем, где вообще сплошная асинхронщина.

Ну а если говорить по теме, то, как по мне, высшее образование в том виде, в котором оно есть, давным-давно безнадёжно устарело. По сути, оно -- пережиток Средневековья, когда основным источником передачи знаний было наставничество: книги были редки и очень дороги, а соответственно, недоступны 99% потенциальных читателей. Сейчас ситуация абсолютно иная, и вуз нужен, по большому счёту, только там, где чему-то нельзя обучиться самостоятельно по объективным и непреодолимым причинам (скажем, изучать анатомию, вскрывая трупы у себя на кухне, проблематично хотя бы из-за уголовного кодекса -- а соответственно, без медвуза не обойтись). Ну и, как известно, нельзя научить -- можно научиться, а если в вуз идут, чтоб откосить от армии или потому что программистам хорошо платят... Так себе мотивация для специалиста.

Но реально-то фокал -- это ДЕКовский язык начала 1970-х, у нас его просто "позаимствовали". Их (дековский) бейсик той же поры крайне убог (но позже был и другой бейсик, уже компилятор, с совершенно другим диалектом).

Уже самый первый IBM PC официально поддерживал объём памяти до 256 Кбайт. Предел в 64 Кбайта, о котором пишет автор, -- это объём на системной (материнской) плате, но IBM сразу предусматривала установку до трёх плат расширения памяти по 64 Кбайта каждая, что в сумме и давало 256 Кбайт (поскольку у ПК было пять гнёзд под платы, при установке трёх плат расширения ОЗУ под остальное оставалось всего два гнезда -- в одно в таком случае вставлялся контроллер гибких дисков, во второе -- либо CGA, либо MDA + порт принтера). Следующий вариант IBM PC перешёл с микросхем ёмкостью 16 Кбит на 64-Кбитные, что обеспечило до 256 Кбайт уже на системной плате; платами расширения можно было увеличить до 640 Кбайт.

Кстати, 640 Кбайт на оригинальном PC/AT тоже требовали платы расширения: на системной плате было лишь 512 Кбайт.

Именно переносимость в рамках единой архитектуры обеспечивает кучу удобств пользователям и живучесть самой архитектуры. Процессоры современных ПК технически способны выполнять код, созданный для первого IBM PC (1981 год), а процессоры современных мэйнфреймов z/Architecture -- прикладной код, созданный ещё для Системы 360 (1964 год). Но, естественно, совместимость имеет место только "снизу вверх": не будет программа, использующая команды, появившиеся в 80286, работать на 8086, а вот наоборот -- запросто.

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

Для прогнозирования изменения погоды важна именно динамика. Если давление стабильно низкое, а погода хорошая -- да, "глаз бури", но корабль в нём может находиться долго -- если направление перемещения и скорость циклона и корабля совпадают :) Если давление низкое, погода хорошая, но давление потихоньку повышается -- значит, из "глаза" подходим к "стенке", и скоро будет буря. Ну а если давление высокое, но быстро понижается -- мы приближаемся к внешней стороне циклона, и тоже будет буря.

Это переводная статья; возможно, оригинал был написан через год-другой после появления первых QLC.

Скажите спасибо искусственному идиоту. Точней, тем естественным идиотам, которые его типа развивают.

На самом деле, для любого программиста, даже если он этого не осознаёт.

Да, если ты пишешь переносимым образом (строго следуя стандарту) на каком-нибудь C++ (не говоря уже о Питоне или Жабе), ты сможешь перекомпилировать программу компилятором для другой архитектуры -- и всё будет работать (ну ладно, не всё и не всегда, но обычно таки будет). Однако взять уже скомпилированный модуль для одной архитектуры и использовать его с другой невозможно, переносимость будет лишь на уровне исходного текста, -- т.е. архитектура всё равно оказывается важной.

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

а) эти микроархитектуры реализовывали одну и ту же архитектуру (между процессорами архитектуры AMD64, разработанными Intel и AMD, объектный или выполняемый модуль переносится, а между, скажем, AMD64 и ARM64 -- нет);

б) данный скомпилированный модуль не использует необязательные расширения архитектуры, реализованные в одной микроархитектуре, но отсутствующие в другой (скажем, разные версии SSE);

в) данный код не полагается на особенности конкретной микроархитектуры (например, не манипулирует моделезависимыми регистрами).

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

Извините, чушь. Под архитектурой ещё с 1960-х годов понимается то, как выглядит процессор или вычислительная машина в целом с точки зрения программиста: какие регистры есть, какие команды имеются, как они кодируются, как организована обработка прерываний, как происходит преобразование адресов из виртуальных в физические и т.д. и т.п. И архитектура абсолютно никак не зависит от реализации: для одной и той же архитектуры может быть множество реализаций. Микроархитектура же описывает как раз подробности реализации, но без привязки к физическому воплощению (к нанометрам и упоминаемой Вами топологии, грубо говоря): она говорит, сколько стадий у конвейера, какие внутренние физические регистры процессор имеет, какие передачи данных выполняются на каждой стадии, какие обрабатывающие блоки имеются и как они управляются, и т.д. и т.п. -- но ничего не говорит о том, как физически это реализовано. Одну и ту же микроархитектуру можно реализовать разными физическими способами, как одну и ту же архитектуру -- различными микроархитектурами.

Архитектура не меняется уже четверть века -- и называется AMD64/Intel 64. А Zen 1-2-3-100500 -- это микроархитектуры.

1
23 ...

Информация

В рейтинге
3 785-й
Откуда
Солнечногорск, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Инженер встраиваемых систем
Ведущий