LINUX.ORG.RU

Ответ на: комментарий от rand

Свобода это рабство!^UПрикладное ПО это системное! Теплое это мягкое!

slackwarrior ★★★★★
()

MMIX ассемблер же! Всепокайтеся!

Xenesz ★★★★
()
Ответ на: комментарий от pathfinder

Раз уж ты собрался писать свою ОС, напиши сначала свой язык.

Не, так слишком просто. Сначала надо собрать железку.

gensym ★★
()
Ответ на: комментарий от gensym

Раз уж ты собрался писать свою ОС, напиши сначала свой язык.

Не, так слишком просто. Сначала надо собрать железку.

...из собственноручно добытого кремния.

tailgunner ★★★★★
()

Смотря какого назначения ОСь

Deleted
()

Универсальных языков для написание ОС не существует (имхо). Лучший вариант может быть свой DSL, оптимально подходящий
под архитектуру ОС.
(Опять же в процессе, разработки «придет озарение», и придется изменять архитектуру и соответственно язык.)
Мой разумный вариант:
DSL написанная на DSL, которая написана на другой DSL....
Так и только так....

NewHackersIgnat
()
Ответ на: комментарий от NewHackersIgnat

свой DSL, оптимально подходящий под архитектуру ОС

не проживёт такая система долго. по этому C, со своим устоявшимся стандартом - лучше всего подходит для написания OS.

AGUtilities ★★★
()
Ответ на: комментарий от AGUtilities

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

AGUtilities ★★★
()

(тред не читал)
BASIC. Подтверждено Мелкософтом.

Skeletal ★★★
()
Ответ на: комментарий от AGUtilities

Почему, если она же на DSL написана, код будет на порядок короче.
И нечего лишнего. Каждый кто сможет понять, суть ОС суть DSL.
Сможет изменив пару строк кода, существенно поменять архитектуру ОС.
Тут главное не отступать, для каждого модуля свой четко выверенный DSL, отражающий и черты самой ОС и архитектурные отличия модуля от общей идеи ОС.

NewHackersIgnat
()
Ответ на: комментарий от AGUtilities

Ну это та штука на моем компе, в которой не обязательно будет MyPaint & Co. Ну ты понел, да? Прослойка между твоим прикладным ПО и твоим железом. Или слишком узко?

cdshines ★★★★★
()

мдэ

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

anonymous
()
Ответ на: комментарий от AGUtilities

А C это и был изначально DSL для написания ОС Unix.

anonymous
()
Ответ на: комментарий от AGUtilities

Да не, я-то знаю, поэтому и спросил, какого ты рожна приплетаешь сюда прикладное ПО:) Даже вики, какой-никакой, а все-таки источник, вот здесь: http://en.wikipedia.org/wiki/Operating_system содержит диаграммку, где все твои пейнты и жабоклиенты вынесены отдельно от ОС. А ты смешал мух с котлетами, и не можешь это признать.

cdshines ★★★★★
()
Ответ на: комментарий от NewHackersIgnat

DSL оправданы в алгоритмически сложных задачах, когда средств абстракции самого языка уже недостаточно чтобы кратко выразить суть программы.
В ОС это не нужно, там нужен низкоуровневый доступ к регистрам/памяти и примитивные, но эффективные структуры данных.

rand
()
Ответ на: комментарий от cdshines

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

давай же отделим твоих мух от твоих котлет, и так:

  • загрузчик (syslinux, lilo, grub?), это операционная система? нет, это прикладная программа, но для него нужен ассемблер или C
  • ядро (linux, hurd), это операционная система? нет, это не ОС, а программа которая должна помочь при работе с железом. то есть, грубо говоря, linux - это драйвер.
  • ты работаешь с драйверами на прямую? нет, ты работаешь с программами (прикладными), а программам нужны базовые библиотеки. и тут мы подходим к libc. но ведь сама по себе libc не операционная система, так как ты с ней на прямую не работаешь.
  • а вот coreutils (cp, rm) - это прикладная программа или операционная система?
  • или может быть bash - операционная система? или всё таки это прикладная программа? но ты же ведь используешь его для работы с прикладными программами, такими как imagemagick?
  • а наутилус или тюнар ты используешь для того чтобы работать с прикладным ПО? а ведь и наутилус и тюнар могли бы быть написаны на Python

вот тут мы и подошли к тому, что ОС - это совокупность всего ПО, которое тебе нужно для совершения тобой грязных делишек.

При чём, необходимый минимум ассемблера и C - это загрузчик, драйвера и glibc

так что держи свои котлеты с мухами при себе, умник.

AGUtilities ★★★
()
Ответ на: комментарий от AGUtilities

В курсе «системное программное обеспечение» нам давалось дофольно формальное определение термина «операционная система». Только я его уже подзабыл. :)
Читал Сергей Кузнецов, бывший руководитель SUUG (Soviet UNIX User's Group).

pacify ★★★★★
() автор топика
Ответ на: комментарий от quantum-troll

Если ты пишешь свободную ОС, и под неё кто-то будет писать программы, в её состав разумно включить библиотеки и компилятор.

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

Да и мало подходит хаскель для подобных задач.

Конечно, он не подходит :) Как и go. Хотя, в Galois сделали HalVM как раз для этой цели (прототипы ОС на хаскеле).

quasimoto ★★★★
()
Ответ на: комментарий от AGUtilities

Ты чо, наркоман?) Прикладное ПО - это загрузчик? Дальше не читал.

cdshines ★★★★★
()
Ответ на: комментарий от cdshines

вики

кучка ретардов написало, а ты подхватываешь, ещё и радуешься, мол: «ах какая красивая какашка. ах какой я умный - умею ссылки на какашки давать.»

между тем, твоих собственных соображений по теме так и не видно.

AGUtilities ★★★
()
Ответ на: комментарий от anonymous

Почему?

А зачем?

GC нужен для поддержки таких фич как замыкания, неограниченные ФВП и свободно создаваемые динамические структуры данных (без необходимости следить за их освобождением).

Например, если мы вернём лямбду из функции и эта лямбда использует аргументы функции (замыкает их), то нужно, во-первых, переместить их со стека в кучу (память+, время+) и, во-вторых, должен быть код который будет вести учёт таких данных в куче (память+) и постоянно занимать процессорное время, проверяя не пора ли эти данные освободить (время+).

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

Что касается ПО из base system - если его можно писать «линейно» (без замыканий, ФВП, и свободных динамических данных), а это как раз можно и предпочтительно, то GC и не нужна в такого рода ПО.

quasimoto ★★★★
()
Ответ на: комментарий от AGUtilities

загрузчик (syslinux, lilo, grub?), это операционная система? нет, это прикладная программа, но для него нужен ассемблер или C

Нет, ламо, загрузчик - это как раз таки ОС. Маленькая такая, но ОС. И BIOS, кстати, это тоже ОС. Очень маленькая.

ядро (linux, hurd), это операционная система? нет, это не ОС

Да, это ОС, по определению, которое было старым и общепринятым, еще когда ты у папки в мошонке болтался.

ОС - это совокупность всего ПО

Ламо, засунул бы ты свои дебильные определения куда поглубже.

anonymous
()
Ответ на: комментарий от quasimoto

Ядро это совсем другой уровень

Повторю вопрос - почему?

С какой радости драйвера нельзя писать с блямбдами и LINQ-ами? Коран запрещает, штоле?

anonymous
()
Ответ на: комментарий от anonymous

Он всё правильно сказал. А ты закрой санузел и иди смотреть телепузиков.

anonymous
()
Ответ на: комментарий от anonymous

Ололошеньки! Загрузчик это операционная система!! ах-ах-ах :D И только децелы называют Linux операционной системой. Такчто пойди и толкни себя в стену!

anonymous
()
Ответ на: комментарий от AGUtilities

Это потому, что я привык опираться на общепринятые определения, а не на глубокомысленное «ос - это едро, кореутилс и майпеинт, а ты захлопнись». Смотри:

http://www.webopedia.com/TERM/O/operating_system.html

http://cplus.about.com/od/introductiontoprogramming/g/opsystemdef.htm

http://searchcio-midmarket.techtarget.com/definition/operating-system

http://hitachi-id.com/concepts/operating_system.html

http://www.pcmag.com/encyclopedia_term/0,2542,t=operating system&i=48510,...

Это то, что я нагуглил - самые релевантные ссылки, выданные гуглом. А теперь дай мне ссылку ты, где будет написано, что ОС - это все-все-все программы на ПК. Только пусть это будет посещаемый сайт, а не наколенное школоподелие.

cdshines ★★★★★
()
Ответ на: комментарий от AGUtilities

Ну или вот тебе из британники, уж ее-то точно не ретарды пишут, да? http://www.britannica.com/EBchecked/topic/429897/operating-system-OS

Короче, мне надоело, но если ты будешь упираться, как баран - иди и найди такое определение, которое подтвердит твои слова, или gtfo.

cdshines ★★★★★
()
Ответ на: комментарий от anonymous

Повторю вопрос - почему?

Повторяю вопрос - нафига козе баян? Вопрос «почему нельзя» это не вопрос (мало ли что не имеет отношения к вопросу рассмотрения и, таким образом, не нужно, в контексте данного вопроса), вопрос - «зачем это нужно». Зачем?

Как бы, область design, особенно OS design, это область вообще не лежащая в плоскости языков программирования. Писать-реализовывать то что ты напридумывал можно на любом языке. Но

С какой радости драйвера нельзя писать с блямбдами и LINQ-ами?

Это всё позволительно только в прототипах. И

Коран запрещает, штоле?

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

Например, за L4 лежат определённые чёткие идеи, но первая версия была вовсе на ассемблере, потом уже на C++ (в одной реализации был верификатор времени компиляции на Haskell). И ни у кого так и не возникло необходимости переписывать это (условно) на лиспах, потому что наличие или отсутсвие в языке высокоуровневых фич никак не сопряжено с наличием или отсутсвием в разработке концептов.

quasimoto ★★★★
()
Ответ на: комментарий от quasimoto

С какой радости драйвера нельзя писать с блямбдами и LINQ-ами?

Это всё позволительно только в прототипах

Это всё _технически возможно_ только в прототипах, потому что нынешние компиляторы так себе.

а L4 лежат определённые чёткие идеи, но первая версия была вовсе на ассемблере, потом уже на C++ (в одной реализации был верификатор времени компиляции на Haskell). И ни у кого так и не возникло необходимости переписывать это (условно) на лиспах

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

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

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

Например что? C++? ATS / Cyclone / ...? Сторонние верификаторы? Или какой-то несуществующий пока язык - достаточно высокоуровневый и (вопреки) с эффективным компилятором?

quasimoto ★★★★
()
Ответ на: комментарий от quasimoto

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

Например что? C++? ATS / Cyclone / ...? Сторонние верификаторы? Или какой-то несуществующий пока язык

Это точно не Си++ и не AST. Наверное, это и не Cyclon, хотя он ближе всего. Я не знаю, что это будет, но попытки создать этот новый язык периодически предпринимаются - Cyclon, BitC, в меньшей степени - Rust, D. Или более «верификаторный» подход - Ivy. Насколько я могу судить, растет понимание того, что ОС и низкоуровневый софт нужно писать на чем-то более безопасном, чем Си, но создать это «что-то» пока не получается.

tailgunner ★★★★★
()
Ответ на: комментарий от cdshines

а сам соображать ты не привык, очевидно.

хорошо, давай пройдём по твоим ссылкам... (подчёркнутым текстом выделю свои комментарии)

http://www.webopedia.com/TERM/O/operating_system.html

The most important program that runs on a computer (определеня ОС не дали, назвали её программой и не сказали что входит в состав операционной системы). Every general-purpose computer must have an operating system to run other programs.(опять же, для запуска и выполнения программ, кроме linux, используется ещё и куча другого софта, в том числе загрузчик(для запуска самого ядра, винды или другой программы), bash, glibc и файловые менеджеры, причём последние - самые настоящие прикладные программы, и, ещё раз, могут быть написаны на Python) ) Operating systems perform basic tasks, such as recognizing input from the keyboard (это выполняют драйверы входящие в состав ядра, но всё это поделено на ноль, пока к этому не подключен эмулятор терминала и интерпритатор команд. при чём, это не ядро запускает agetty и bash, а другие программы), sending output to the display screen(linux это не делает сам: в этом процессе как минимум участвуют такие программы как agetty, bash, xorg, gtk+, qt, wxwidgets. при чём, gtk+, qt, wxwidgets сами по себе ничего не делают, а руководствуются инструкциями прикладных программ), keeping track of files and directories on the disk(это понимать буквально или с прикладной точки зрения? если буквально, то всё что делает linux - это записывает или читает файлы с помощью драйверов файловой системы, а полезный труд по работе с файлами выполняют файловые менеджеры - которые являются прикладным ПО), and controlling peripheral devices such as disk drives and printers(принтеры: linux не контролирует принтеры, он помогает другим программам их контролировать).

An Operating System is a computer program that manages the resources of a computer. It accepts keyboard or mouse inputs from users and displays the results of the actions and allows the user to run applications, or communicate with other computers via networked connections.

тоже самое

AGUtilities ★★★
()
Ответ на: комментарий от AGUtilities

по этому, руководствуясь теми же определениями, которые приводились, операционной системой правильнее считать всё ПО, которое находится на компьютере.

AGUtilities ★★★
()
Ответ на: комментарий от AGUtilities

В книжке Таненбаума (Operating Systems: Design and Implementation, глава 1) браузеры и офисы называются «программами-приложениями», уровнем ниже - системные программы (оболочка, компиляторы, редакторы, системные утилиты), т.е. то без чего нельзя администрировать систему, ещё уровнем ниже - ОС (видимо, загрузчик, ядро, драйвера, сервисы, и всё то, что позволяет работать программам-приложениям и системным программам), а дальше уже - машинный язык, микроархетиктура и непосредственно железо.

quasimoto ★★★★
()
Ответ на: комментарий от AGUtilities

Иди пиши учебники для нанопоколения, тебе будут рады.

cdshines ★★★★★
()
Ответ на: комментарий от quasimoto

и это не мешает всё это назвать единой, хотя и делимой, операционной системой, при чём, руководствуясь определением из самой британики.

AGUtilities ★★★
()
Ответ на: комментарий от AGUtilities

То есть, вот написал я свой helloworld, положил его, скажем, в /usr/bin, и теперь он тоже - «операционная система»? Имхо, ты уже существенно перегибаешь.

OldFatMan
()
Ответ на: комментарий от dictator_perpetuus

Прикладуха это не часть ОС

если перейти на совсем буквальные понятия, то Linux, как ядро, можно приложить к чему угодно: PC, PS(sony), mobile, тостеры, микроволновки, чайники, часы и на что только фантазии хватит.

AGUtilities ★★★
()
Ответ на: комментарий от OldFatMan

вот написал я свой helloworld, положил его, скажем, в /usr/bin, и теперь он тоже - «операционная система»?

от этого, твой helloworld не перестаёт делать то что ты от него хочешь и ожидаешь.

AGUtilities ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.