Другие языки программирования и технологии

Не возьму в толк, как создаются большие программы и ОС?

Изучал С++, Visual Basic .net...
Ну если с бейсиком еще все понятно - умело использую предоставленные .net классы, то С++ меня ставит в тупик.

Большинство книг по С++ ограничиваются консольными программами и стандартной библиотекой.

Как С++ стал так популярен, как на нем пишут сложнейшие, и вполне ГУИевые приложения, как на нем (ну или на Си) пишут операционные системы, а-ля Линукс?
Ведь не магия же это, возможно ведь, но не понимаю - КАК?
Попробую от себя написать, если что-то не верно, то прошу прощения) )
Тебе скорее всего не хватает представлений о архитектуре компьютера и кодирование информации.

На низком уровне железа, все управление устройствами происходит через триггеры. Если послать триггерам (которые собираются в регистр) определенную последовательность бит, то он выполнит определенное действие. Это из архитектуры ЭВМ.

Для пересылки данных к устройствам используется шины и процессор, который выполняет машинные команды. Встретив определенную последовательность байт, он выполняет определенные операции по преобразованию и направлению данных (прерывания процессора, хорошо показаны в ассемблере) . Перекидывание байтов туда-сюда по шинам к портам (регистрам устройств) используется для управления устройствами и называется "программирование микроконтроллеров".

Так вот, если брать высокий уровень языка, например Си, то основные команды для таких действий уже написаны в более удобную форму. Например ( M. УЭИТ Язык Си. Руководство для начинающих.) :

Приведем пример программы, представляющей собой первую попытку извлечь звуковой сигнал из громкоговорителя:
/* сигнал1 */
/* заставляет громкоговоритель подавать сигнал */
main( )
{
int store;
store = inp (97); /* получаем и запоминание начальное значение из порта 97, что бы потом восстановить (сбросить) */
printf("пopт 97 = % d \n", store); /* проверка результатов*/
outp(97, 79); /* посылает 79 в порт 97; включение громкоговорителя */
outp(97, store); /* восстановление начального значения */
}

Так вот, например с помощью cout, cin и других подобных можно так же посылать данные (обычно это монитор и память) , добиваясь определенных результатов от системы. Вот примерно из таких кирпичиков в бесконечном цикле и собираются ОС, только намного сложнее.

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

P.S. приведенная программа не работает под Windows, он блокирует прямое управление портами (там используются API для этого) . Зато можно протестировать на Линуксе.
Zheka Plishkin
Zheka Plishkin
40 015
Лучший ответ
Вот потому ты и не пишешь ОСи, и не Бил Гейтц!
Можешь сомневаться, но в программировании нет ничего, кроме стандартных операторов (да-да, именно "if-else", "do-while", "case") и вызовов функций. Ну, обработка событий, которая представляет собой тот же (хоть и неявный) вызов функций.
Триатлон @(
Триатлон @(
78 597
http://habrahabr.ru/post/46757/ там почитай, буков много все не влезет....
Все верно, большинство книг заканчивают консолью, но не простой, а с классами и шаблонами STL.Я оцениваю этот уровень как уровень 1-2 начального класса в изучении С++.Но есть ведь и полная 11 летка и вуз в изучении С++.Что то мало в вузах первоклашек со знанием букваря)). Здесь тоже самое.
Откройте для себя мир программирования в Windows, добро пожаловать в MSDN!
Vano Tsabutashvili
Vano Tsabutashvili
35 996
качаем ядро линукса. смотрим исходники. думаем.
Linux слишком большая вещь чтобы её рассматривать как пример программы которую можно написать. Современное программирование не сводится к созданию программы на 100% своими силами. Если вы скачаете какое-то удобное и красивое приложение то на 95% оно создано с применением платных библиотек обеспечивающих весь функционал GUI.

ООП программирование позволяет надстраивать свою функциональность над классами которые разрабатывали другие люди. При том реализация каждого класса скрытая. Грубо говоря, для того чтобы улучшить объект вам не требуется знать как он работает. Правильное деление программы на классы 50% успеха.

Что же касается С++ и тайного шаманства, применения WinAPI и прочей низкоуровневой приблуды из С++..
Честно - это фигня. Любая библиотека так или иначе работает с системой. Будь это Делфи, С++ или C#. Везде одни и те же WinAPI. Желание лезть на нижний уровень никак не связано с повышением качества ПО. За всё приходится платить.
В древние времена до изобретения стандартов и библиотек люди работали напрямую с драйверами. Теперь можете сами прикинуть. Что легче? 1 раз изучить ADO . NET или каждый раз изучать API очередного SQL сервера.
серьезное ПО пишут целыми корпорациями, институтами.
к примеру Корпорация Adobe Systems.
Можно и одному что-то своять, но нужно много знаний и врямя.
Взять, к примеру, разработчика Linux Линуса Товальдиса, он программист-хакер.
Я юзаю Delphi [Object Pascal]
Знаменитое ПО написанное на Delphi
Интернет, общение: QIP, Skype, The Bat!
Web-Браузеры: Avant Browser, Netcaptor
Утилиты: Total Commander
Разработка: Dev-C++, Inno Setup
Нанимают персонал, много персонала, они пишут код. Вроде ничего необычного
Bek _Orda
Bek _Orda
1 292
Большой командой программистов, короче равносильно писать Войну и Мир
конольные программы =)
эмэвси юзают
библиотеки и тому подобное
не забывай еще и драйвера пишут