Изучал С++, 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 для этого) . Зато можно протестировать на Линуксе.
Тебе скорее всего не хватает представлений о архитектуре компьютера и кодирование информации.
На низком уровне железа, все управление устройствами происходит через триггеры. Если послать триггерам (которые собираются в регистр) определенную последовательность бит, то он выполнит определенное действие. Это из архитектуры ЭВМ.
Для пересылки данных к устройствам используется шины и процессор, который выполняет машинные команды. Встретив определенную последовательность байт, он выполняет определенные операции по преобразованию и направлению данных (прерывания процессора, хорошо показаны в ассемблере) . Перекидывание байтов туда-сюда по шинам к портам (регистрам устройств) используется для управления устройствами и называется "программирование микроконтроллеров".
Так вот, если брать высокий уровень языка, например Си, то основные команды для таких действий уже написаны в более удобную форму. Например ( 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 для этого) . Зато можно протестировать на Линуксе.
Вот потому ты и не пишешь ОСи, и не Бил Гейтц!
Можешь сомневаться, но в программировании нет ничего, кроме стандартных операторов (да-да, именно "if-else", "do-while", "case") и вызовов функций. Ну, обработка событий, которая представляет собой тот же (хоть и неявный) вызов функций.
http://habrahabr.ru/post/46757/ там почитай, буков много все не влезет....
Все верно, большинство книг заканчивают консолью, но не простой, а с классами и шаблонами STL.Я оцениваю этот уровень как уровень 1-2 начального класса в изучении С++.Но есть ведь и полная 11 летка и вуз в изучении С++.Что то мало в вузах первоклашек со знанием букваря)). Здесь тоже самое.
Откройте для себя мир программирования в Windows, добро пожаловать в MSDN!
Откройте для себя мир программирования в Windows, добро пожаловать в MSDN!
качаем ядро линукса. смотрим исходники. думаем.
Linux слишком большая вещь чтобы её рассматривать как пример программы которую можно написать. Современное программирование не сводится к созданию программы на 100% своими силами. Если вы скачаете какое-то удобное и красивое приложение то на 95% оно создано с применением платных библиотек обеспечивающих весь функционал GUI.
ООП программирование позволяет надстраивать свою функциональность над классами которые разрабатывали другие люди. При том реализация каждого класса скрытая. Грубо говоря, для того чтобы улучшить объект вам не требуется знать как он работает. Правильное деление программы на классы 50% успеха.
Что же касается С++ и тайного шаманства, применения WinAPI и прочей низкоуровневой приблуды из С++..
Честно - это фигня. Любая библиотека так или иначе работает с системой. Будь это Делфи, С++ или C#. Везде одни и те же WinAPI. Желание лезть на нижний уровень никак не связано с повышением качества ПО. За всё приходится платить.
В древние времена до изобретения стандартов и библиотек люди работали напрямую с драйверами. Теперь можете сами прикинуть. Что легче? 1 раз изучить ADO . NET или каждый раз изучать API очередного SQL сервера.
ООП программирование позволяет надстраивать свою функциональность над классами которые разрабатывали другие люди. При том реализация каждого класса скрытая. Грубо говоря, для того чтобы улучшить объект вам не требуется знать как он работает. Правильное деление программы на классы 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
к примеру Корпорация Adobe Systems.
Можно и одному что-то своять, но нужно много знаний и врямя.
Взять, к примеру, разработчика Linux Линуса Товальдиса, он программист-хакер.
Я юзаю Delphi [Object Pascal]
Знаменитое ПО написанное на Delphi
Интернет, общение: QIP, Skype, The Bat!
Web-Браузеры: Avant Browser, Netcaptor
Утилиты: Total Commander
Разработка: Dev-C++, Inno Setup
Нанимают персонал, много персонала, они пишут код. Вроде ничего необычного
Большой командой программистов, короче равносильно писать Войну и Мир
конольные программы =)
эмэвси юзают
библиотеки и тому подобное
не забывай еще и драйвера пишут
эмэвси юзают
библиотеки и тому подобное
не забывай еще и драйвера пишут
Похожие вопросы
- надо ли знать математику программисту? Собераюсь писать программы на ОС язык С++.
- Вопрос по ядру ОС. Как выполняются программы на операционной системе? (углубленно).
- В какой программе создаются заставки на телевидении?
- Чем отличаются ОС в запуске программ? Например Windows, Linux и др. Конкретней вопрос внутри.
- загрузила windows xp, windows 7 пропал из загрузок ОС..мне говорили,что есть программа, которая восстанавливает выбор ОС
- Помогите создать резервную копию ОС
- Задание 1 Ответьте на вопросы. Какие возможности предоставляет пользователям ОС Windows 7?
- Самодельная ОС
- А почему программы написанные на C/C#/C++ имеют больший вес чем на tasm/masm?
- Задача 6. Типизированные файлыСоставить программу, в которой создается и обрабатывается типизированный файл.