| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Знание OS Internals |
| Автор: S.A.G. 28.2.2007, 16:00 |
| Странно, но новичкам которые хотели бы изучать программирование как правило рекомендуют прочитать книгу по одному из популярных языков программирования (в зависимости от того с чем хочет работать начинающий в будущем). Однако на мой взгляд в первую очередь стоило бы почитать про OS в которой придеться работать. Не даром говорят что, к примеру, Windows не самая подходящая среда для обучения программированию. Каково ваше мнение, уважаемые разработчики, умудренные опытом работы с C/C++? |
| Автор: Fazil6 28.2.2007, 16:21 |
| язык программирования никак с ОС не связан. |
| Автор: S.A.G. 28.2.2007, 16:23 |
| Это я знаю. Это и не имелось ввиду |
| Автор: vitlic 28.2.2007, 16:26 |
| Таненбаум Э. "Современные операционные системы" 3-е издание Наверно лучшая книга в этой области там всё есть, и процессы, и трейды, и файловая система, да и все остальное. С примерами из проглого и настаящего. имхо. Ни одна книга по программированию не заменит столь всеобъемлющее руководство. И не даром этот курс, "Операционные системы", уже стандарт во всех высших учебных заведениях. А вот после этой книжки, можно и про окна у Петзольда прочитать, и даже написать что-нибудь. |
| Автор: Fazil6 28.2.2007, 16:33 | ||
и что? сначала нужно научиться языку, а уж потом особенностям его применения в различных ситуациях. Или Вы предлагаете начинать изучение программирования с синхронизирования потоков или WinAPI? |
| Автор: S.A.G. 28.2.2007, 16:44 |
| Я предлагаю сначала узнать самое основное об архитектуре системы чтобы поменьше возникало вопросов в процессе изучения языка программирования и тех его аспектов которые зависимы от ОС в которой он будет применяться. Например в стандарте про язык C четко выписано что размер типа данных char зависит от кодировки применяемой в каждой конкретной ОС. Есть и другие вещи. Бегло осмотрев Руссиновича, узнал что в Windows применяеться Unicode, а значит размер типа char должен быть равен 2 байтам для этой ОС. vitlic, У тебя есть эта книга? |
| Автор: Fazil6 28.2.2007, 16:51 | ||
галиматья какая-то. кто тебе сказал, что это зависит от виндовс? С чего ты взял, что в Windows нельзя пользоваться однобайтным char? |
| Автор: S.A.G. 28.2.2007, 17:02 | ||||
Приведу цитату из книги С.Праты "Язык программирования C": "Если говорить в общем, то в языке С гарантируеться, что данные типа char имеют достаточно большие размеры для того, чтобы вместить основной набор символов той вычислительной системы, в которой реализован язык C.... В языке C байт определяеться как число битов, используемых для представления данных типа char, поэтому в такой системе байт должен иметь длину не 8 битов, а 16 (по крайней мере, так следует из документации по языку C)" Как известно, байт не может быть большим чем 8 битов, поэтому в C тип char должен иметь размер 16 битов чтобы уместить основной набор символов Windows(Unicode). Так записано в стандарте. Мне кажеться термина "Однобайтный char" в языке С для Windows нет. Скорее всего имееться ввиду часть таблицы Unicode, вмещающая стандартные коды ASCII. |
| Автор: vinter 28.2.2007, 17:09 | ||||
| все это галиматья, все то что ты привел, это особенности архитектуры x86, а не ОС, в никсах так же есть юникод, изучать надо язык, а уж потом особенности ОС если это вообще понадобится(СП), а если нет то нафиг это не нужн, программирование есть алгоритмическая база. Добавлено @ 17:10
канешно нет, char всегда однобайтный и никаких уточнений здесь не надо Добавлено @ 17:11
стандарт не читал, но вообще этот тип называется wchar_t |
| Автор: S.A.G. 28.2.2007, 17:19 | ||||||
vinter,
Ничего не придумал. Информация почерпана только из книги С.Праты а он в написании своей книги опирался на стандарт.
Архитектура определяет какую кодировку удобнее применить для ОС?
Думаю с этим согласяться не все. Мне кажеться что перед тем как начать изучать язык (чтобы его потом применить для написания приложений в конкретной ОС), желательно ознакомиться хотябы с самыми общими принцыпами ее работы. |
| Автор: vitlic 28.2.2007, 17:23 |
| размер char равен 1. Это неписанная истина) книжка лежит http://rapidshare.com/files/18706550/kniga.zip.html Так как она в формате djvu, там и прога для просмотра. |
| Автор: vinter 28.2.2007, 17:27 | ||||
нет, байтовую структуру
зачем?? я вот столкнулся с такой проблемой, только когда надо было писать дефрагментатор и все, сначала язык надо знать! как ты думаешь зачем стандарт нужен?? если будешь писать по стандарту(исп. ф-ии описанные в стандарте), то получишь кроссплатформенное приложения, и тебе будет плевать на особенности ОС. |
| Автор: S.A.G. 28.2.2007, 17:28 | ||
vitlic,
В таком случае возникали бы проблемы при вводе/выводе символов из таблицы Unicode. А их ведь нет Спасибо за книгу! |
| Автор: Fazil6 28.2.2007, 17:33 | ||
ты прямо открыл мне глаза.... Я то все эти годы думал, что под Windows пишу и однобайтный char использую. char предназначен для символов ASCII , а для символов Unicode нужно применять другой тип. |
| Автор: S.A.G. 28.2.2007, 17:37 | ||||||
Fazil6,
В стандарте такого нет. Вероятно так была разрешена проблема разработчиками компиляторов C для Windows - для обработки ASCII использовать однобайтный char, а для виндового юникода ввести специальный двухбайтовый тип. Но ведь можно было ввести и двухбайтный char.. наверное от такого решения отказались чтобы обеспечить поддержку старого кода/программ. vitlic, но ты говорил о 3-ем издании книги, а там 2-е. Может ошибся? vinter,
Что имееться ввиду? В случае кроссплатформенных приложений ты прав.
Согласно стандарту, размер типа char в Windows должен быть равен 2 байтам а не 1. Однако тут разработчики компиляторов поступили по-другому. Если бы я захотел обработать символы Unicode, используя при этом тип char(стандарт), то ничего хорошего бы у меня не вышло. О никакой кроссплатформенности тут уже речь не идет, нетак-ли? Думаю ознакомиться с OS Internals необходимо перед чтением книги про конкретный язык, чтобы знать и понимать о чем идет речь. Ведь часто описываються операции с файлами, ввод/вывод. А это уже зависимые от конкретной системы вещи.. |
| Автор: vitlic 28.2.2007, 17:55 | ||
пи.си. У меня только второе издание, третье только недавно вышло. Изменений не много, так как рукописи не горят классика не стареет. |
| Автор: nerezus 28.2.2007, 17:58 | ||||
Не стандартизирована работа с гуями, сетью, XML и т.д. |
| Автор: S.A.G. 28.2.2007, 18:07 | ||||
nerezus,
Т.е. создаешь кросс-платформенный код? Приведи примеры кроссплатформенных классов..
Но стандарт ведь на язык и библиотеку разве в нем должны быть гуи, сети..? vitlic, Стандарт не определяет тип __wchar_t, т.е. насколько я знаю существует стандартный хидер в котором допускаються вариации для размеров различных типов но основной char должен быть двухбайтовым для Windows. |
| Автор: Fazil6 28.2.2007, 18:13 | ||
STL целиком. Классов в ней немеряно. |
| Автор: S.A.G. 28.2.2007, 18:18 | ||||
До STL еще не добрался.. незнаю что в ней |
| Автор: Fazil6 28.2.2007, 18:18 | ||
есть таблица ASCII. В ней 1 символ - 1 байт. Какого художника вдруг char должен быть 2 байта? wchar_t - это ключевое слово в С++. В С есть такой макрос. Этот тип предназначен для Unicoda Твои рассуждения и есть пример того, как неразобравшись с языком начинаются рассуждения как его применять. |
| Автор: S.A.G. 28.2.2007, 18:22 | ||
| Fazil6, Читай выше про то какого размера должен быть тип char для каждой конкретной системы.. в Windows Unicode основной набор а не ASCII. Это и ответ по поводу того каким должен быть char для Windows.
Мои рассуждения всегда есть предмет того как нужно разобраться прежде чем применять что угодно |
| Автор: Earnest 28.2.2007, 18:31 |
| main, ну чего ты уперся? Windows вовсе не основана на UNICODE. Она прекрасно работает с "обычными строками", т.е. char. wchar - дополнительный тип данных, только и всего, облегчающий мульти-язычную поддержку и избавляющий от геморроя с кодовыми страницами. Фраза, которую ты приводил для Windows означает только то, что основные системные вызовы с аргументами строками используют UNICODE-строки. А под символами в стандарте вовсе не буквы подразумеваются... |
| Автор: S.A.G. 28.2.2007, 18:41 | ||||
Earnest,
Упираються это когда знают что не правы и всеравно спорят. Вы в этом уверены? - Не уверены не говорите. Я же хочу для себя уяснить некоторые вещи. Не делайте, пожалуйста, преждевременных выводов. Уточните какую фразу я приводил..
А это разве не означает что она основана на Unicode? Разве на основе того что в системных вызовах используеться Unicode нельзя сделать вывод о том что это для Windows основная кодировка? Если нет то на основе чего можно сделать вывод о том на каком наборе символов основана ОС и на каком наборе основана Windows?????????????????????????? Спасибо, за внимание.. |
| Автор: nerezus 28.2.2007, 18:44 | ||||
|
| Автор: S.A.G. 28.2.2007, 18:55 | ||||||||||||
Я не создавал тему про STL. Добавлено @ 18:57
Причем тут C++?? Я писал про- и имел ввиду язык C и опирался на его стандарт.. |
| Автор: Earnest 28.2.2007, 19:29 | ||
Вот эту:
НЕТ! Добавлено @ 19:30 Основной набор в Windows - по прежнему ASCII. |
| Автор: S.A.G. 28.2.2007, 19:35 |
| Аминь.. Earnest, а вы какого мнения стоит ли читать основы ОС перед изучением языка? |
| Автор: MAKCim 28.2.2007, 20:56 |
перед изучением языка, имхо, нет кстати, все зависит еще от того, в каком направлении дальше работать: для системного программирования - обязательно, для прикладного - это, опять имхо, не столь важно (однако не помешает) Весь Танненбаум - классика, не привязанная к конкретной ОС Для Linux - "Разработка ядра Linux. Р. Лав" + сырцы Для Window$ - Руссинович/Соломон |
| Автор: dumb 28.2.2007, 21:07 |
ой. а это исходя из чего такой вывод сделан? |
| Автор: Daevaorn 28.2.2007, 21:39 |
да. Для XP как раз UNICODE. И всё API, что не UNICODE, то оно переводится в него независимо то клиентского кода. |
| Автор: S.A.G. 28.2.2007, 22:14 |
| Так какой же набор всетаки основной? |
| Автор: Daevaorn 28.2.2007, 22:22 |
ну это не сложно узнать, на http://msdn.microsoft.com/library/default.asp?url=/library/en-us/intl/unicode_9i79.asp есть всё |
| Автор: vitlic 28.2.2007, 22:44 | ||||
| Полез за тяжелой артилерией) Рихтер об этом (книжка не новая, про XP/NT/Vista ничего нет):
Ну и самое важное:
|
| Автор: Daevaorn 28.2.2007, 22:46 |
да. тоже что и в msdn |
| Автор: vitlic 28.2.2007, 22:51 | ||
Так ведь MSDN и Рихтер едины А вообще я по вашей ссылке не ходил, подумал, что вы просто ссылку на msdn.com дали.. Оказалось зря) |
| Автор: Vyacheslav 28.2.2007, 23:31 | ||||||
Как причем?
А что, на языке С уже можно писать классы? А в цитате ниже Вы тоже не уточняете . что "конкретный язык" - это конкретный С
Ну и я не силен в стандарте языка С, но предполагаю, что работа с файлами там тоже стандартизирована. В последнее время, кстати, я занимаюсь тем, что пишу кроссплатформенные приложения для Windows/Linux/HP-UX/Solaris. И могу сказать, что больше всего меня напрягают не особенности платформ, а различия в компиляторах. И что особенно удивительно, мне удается написать приложения при том, что не считаю себя большим знатаком WInApi или POSIX. Оказалось, что для написания хорошего приложения достаточно добротного знания "конкретного языка" и умения пользоваться MSDN или man |
| Автор: Daevaorn 28.2.2007, 23:56 |
да. мне кажется, что MS поступила абсолютно правильно, сделав UNICODE как бы стандартом. Я за то чтобы как можно большее количество разработчиков перешли на него, т.к. сам активно его применяю и понимаю всё удобство. |
| Автор: MAKCim 1.3.2007, 00:16 | ||
цитата из Руссинович/Соломон
|
| Автор: S.A.G. 1.3.2007, 00:49 | ||||
именно на нее я и ссылался |
| Автор: nerezus 1.3.2007, 06:36 | ||
|
| Автор: Earnest 1.3.2007, 09:02 | ||
Из того, что он доступен и меньше по размеру, чем UNICODE.
Конечно, только это вовсе не тот набор симоволов, о котором говорится в цитате из Пратта. Если бы UNICODE стал "основным набором" тогда, действительно, от однобайтовых чаров пришлось бы отказаться... Теория теорией, а кто на это пойдет, да и зачем? UNICODE - стандартный формат обмена текстовой информацией, а не "основной набор символов" OS. И по теме: я считаю, что некоторое представления о ЯП весьма полезно при чтении книги об операционках. Равно как и наоборот. Читайте и изучайте одновременно, кто мешает? Кроме того, можно параллельно читать детективы или фэнтези, по вкусу |
| Автор: Rockie 1.3.2007, 13:12 |
[offtop] У нас сейчас довольно жесткие репрессии по поводу лицензионного/нелицензионного ПО. Так вот некоторые юзвери перескакивают с windows на unix-системы. В знакомой фирме разработчики вслед за изменением рынка пересаживаются на Java. Так что, как показывает практика, все таки связан. [/offtop] |
| Автор: S.A.G. 1.3.2007, 13:39 | ||
Earnest,
О каком тогда наборе говорил Прата? |
| Автор: Vyacheslav 1.3.2007, 14:10 | ||
И причем тут операционка? Это рынок. А то что востребованность на Java-разработчиков больше, это не открытие. И это мало связано с переходом на другую платформу. Просто общая тенденция такая. А на какой платфоре будет установлен web-сервер , в котором будет крутиться сервлет, разработанный на этой самой Javа, это уже без разницы |
| Автор: nerezus 1.3.2007, 14:20 |
| [quote] Так что, как показывает практика, все таки связан. [/quote И чем же? Даже из примера не видно. Разве под C++ нельзя писать под никсы? Или писали раньше на VB/Delphi/etc? |
| Автор: Fazil6 2.3.2007, 00:28 | ||||||
вообще байт может состоять из какого хочешь количества битов. я не знаю о чем он говорил, но в стандарте говорится о basic execution character set - основной набор символов среды исполнения вот тебе цитата.
теперь по поводу основного набора.
копирайт -> http://www.digitalmars.com/ctg/CPP-Language-Implementation.html |
| Автор: Fazil6 2.3.2007, 00:43 | ||
MSDN
|
| Автор: Rockie 2.3.2007, 01:49 | ||
а разве я об этом что-то писал.. Ну как неясно. Фирма разработчиков проанализировала, что большинство фирм-клиентов переориентировалось с windows на unix, поэтому сделала уклон в сторону кроссплатформенности, сменив язык разработки. Насколько это правильное решение - это дело их маркетологов, мне как-то все равно. Вполне возможно.
я про востребованность ничего не писал, равно и как про веб-серверы. Но наверное ребята из той фирмы также и думали, как вы в последнем предложении. |