avva: (Default)
[personal profile] avva
На этой неделе умер один из моих кумиров, изобретатель языка C и один из авторов операционной системы Unix, Деннис Ритчи.

Обычным пользователям его имя неизвестно. Но профессионалы-компьютерщики знают, что трудно найти кого-то из живущих людей, кто больше Ритчи повлиял на компьютерный мир, а через него и на весь мир вокруг нас. Написанные на языке C программы управляют практически всеми компьютерами в современном мире, включая сюда отнюдь не только коробку под вашим столом или ноутбук у вас на коленях, но и телефон, на котором вы проверяете почту, и микроконтроллер, который управляет вашей микроволновой печью. Любая современная операционная система - ядро компьютера, которое организует запуск и нормальную работу всех программ - написана на C или потомке этого языка; бесчисленное количество самих программ-приложений - тоже. А книга о языке C, которую Ритчи написал в соавторстве с Керниганом, и 35 лет спустя остается эталоном учебника программирования - по полноте, ясности и одновременно краткости изложения - с которым сравнивают все другие.

Особенностью языка C было то, что он является языком программирования "высокого уровня", т.е. позволяет программисту писать программу, не заботясь об особенностях устройства каждой отдельной модели компьютера, процессора, итд.; - и в то же самое время позволяет программисту, когда ему это действительно нужно, использовать эти особенности и подстраиваться под них. Программисты называют это свойство C "близость к железу", подразумевая под железом метафорически устройство и особенности конкретной модели компьютера. До Ритчи практически единственным языком, "близким к железу", был ассемблер - язык машинных инструкций, собственно указывающих компьютеру, что делать - очень подробный язык, язык "низкого уровня", а главное - разный для разных моделей компьютеров. До Ритчи считалось само собой разумеющимся, что операционная система, организующая работу компьютера, должна быть написана на ассемблере отдельно и заново для каждой модели - и то же самое считалось необходимым для любой программы, которой нужно было пользоваться "близостью к железу". Были, конечно, языки "высокого уровня", но на них можно было решать задачи тоже только "высокого уровня", а чтобы сделать что-нибудь близкое к железу, но необходимое для пользователя, переходили на ассемблер.

Ритчи сделал что-то, что казалось очевидно безнадежным - он нашел золотую середину, изобрел язык программирования, который может одновременно абстрагироваться от конкретных деталей "железа", и подлаживаться под них, когда необходимо. Над этим не работало много других специалистов - потому, что почти никто не мог представить, что это должно быть именно так; а он представил и сделал. Изобретенный им язык лег в основу всего "системного" (т.е. "близкого к железу") программирования, и остается его основой до сих пор. А изобретенная им вместе с Томпсоном операционная система Unix до сих пор (пройдя сквозь много вариантов и версий) используется на значительной части компьютеров в мире, а также оказала огромное влияние на все остальные современные операционные системы.

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

Date: 2011-10-14 07:51 pm (UTC)
From: [identity profile] ygam.livejournal.com
PL/360, основанный на безумном языке PL/I.
PL/M

Date: 2011-10-14 10:37 pm (UTC)
From: [identity profile] ygam.livejournal.com
Forth - да.Паскаль - не низкоуровневый язык. На нем нельзя написать

*(unsigned char *)0xF7239900 |= 0x20;

Date: 2011-10-15 10:03 am (UTC)
From: [identity profile] migmit.livejournal.com
type cc = ^char;
cc($f7239900)^ := char($20);

Date: 2011-10-15 03:55 pm (UTC)
From: (Anonymous)
это не паскаль ни разу
это может быть турбо-паскаль, дельфи, что угодно
я когда-то помнил книжку вирта наизусть

Date: 2011-10-15 05:53 pm (UTC)
From: [identity profile] xeye.livejournal.com
_тогда_ нельзя было написать.
то, чем стал паскаль под железной пятой борланда было бы невозможно без С :)

Date: 2011-10-14 10:38 pm (UTC)
From: [identity profile] ygam.livejournal.com
Думаю, что и ты, и хозяин журнала читали, но ради других читателей:

Why Pascal is Not My Favorite Programming Language

Date: 2011-10-14 11:19 pm (UTC)
From: [identity profile] avva.livejournal.com
Forth - единственный реальный кандидат, это помня о нем, я написал "практически единственном" в записи. Паскаль - нет.

Forth - не "реальный кандидат"

Date: 2011-10-15 01:41 am (UTC)
From: [identity profile] panchul.livejournal.com
Forth - не "реальный кандидат". Forth подразумевает парадигму стековой машины, что для кучи приложений неэффективно, ибо требует суровых оптимизаций как в софтвере (register allocation в гипотетическом сильно оптимизирующем компиляторе с Forth), так и в хардвере (специальных оптимизаций кэширования стека).
From: [identity profile] migmit.livejournal.com
А бывают сильно оптимизирующие компиляторы Forth? Мне казалось, что там до сих пор носятся с "шитым кодом" как с писаной торбой.
From: [identity profile] panchul.livejournal.com
Я не в курсе. Теоретически сильно оптимизирующий компилятор Forth сделать можно - какая разница, начинать с дерева, полученного из польской нотации выражений или обыкновенной (Си-шной), а потом делать data flow analysis, register coloring и прочие штучки, с последующей генерацией высокооптимизированого кода. Но это было бы воспринято как извращение прежде всего адептами Forth-а, который изначально позиционировался как достаточно эффективный язык, который при этом требует очень маленький интерпретатор и поэтому может использоваться (вместе с рудиментарной development system) в системах с маленькими процессорами. Последнее сейчас неактуально - 32-битный low-end MIPS M14K занимает по площади 0.2 квадратных миллиметра даже на старой 90 nm технологии ( http://www.mips.com/media/files/M46_MIPS_Reprint.pdf ), а по энергопотреблению - вообще копейки по сравнению со старыми микроконтроллерами.


А если использовать Forth без такого гипотетического оптимизирующего компилятора и пытаться получить производительность с помощью создания специального хардвера - стекового процессора, то мы угодим в ловушку, в которой в 1980-х оказалась с транспьютерами компания Inmos ( http://en.wikipedia.org/wiki/Transputer ). Еще в начале 1980-х статистический анализ приложений показал, что процессоры с большим количеством регистров общего назначения эффективнее, чем стековые машины. Конечно, можно специальным образом кэшировать стек, как это делает register-poor пентиум, но это ведет к усложнениям там, где шла агитация за простоту.

Date: 2011-10-14 10:40 pm (UTC)
From: [identity profile] ygam.livejournal.com
http://en.wikipedia.org/wiki/Burroughs_large_systems#ESPOL_and_NEWP

Originally, the B5000 MCP operating system was written in an extension of extended ALGOL called ESPOL (Executive Systems Programming Oriented Language).

January 2026

S M T W T F S
    1 2 3
4 5678910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 6th, 2026 03:22 am
Powered by Dreamwidth Studios