Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Знание OS Internals, Для разработчика 
:(
    Опции темы
dumb
Дата 28.2.2007, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 8
Всего: 158



Цитата(Earnest @  28.2.2007,  19:29 Найти цитируемый пост)
Основной набор в Windows - по прежнему ASCII.

ой. а это исходя из чего такой вывод сделан?
PM MAIL   Вверх
Daevaorn
Дата 28.2.2007, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(dumb @  28.2.2007,  22:07 Найти цитируемый пост)
ой. а это исходя из чего такой вывод сделан? 

да. Для XP как раз UNICODE. И всё API, что не UNICODE, то оно переводится в него независимо то клиентского кода.
PM MAIL WWW   Вверх
S.A.G.
Дата 28.2.2007, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


не эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1339
Регистрация: 20.7.2006
Где: in ad equate

Репутация: нет
Всего: 19



Так какой же набор всетаки основной? smile


--------------------
Вот она задачка: спасти себя от себя самого © Cube
Sometimes good people do evil things © A Simple Plan
PM   Вверх
Daevaorn
Дата 28.2.2007, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(main @  28.2.2007,  23:14 Найти цитируемый пост)
Так какой же набор всетаки основной?

ну это не сложно узнать, на msdn есть всё
PM MAIL WWW   Вверх
vitlic
Дата 28.2.2007, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 22.2.2007
Где: где home(){return где="тут"}

Репутация: 1
Всего: 1



Полез за тяжелой артилерией)

Рихтер об этом (книжка не новая, про XP/NT/Vista ничего нет):
Цитата

Windows 2000 и Unicode
Windows 2000 — операционная система, целиком и полностью построенная на Unicode. Все базовые функции для создания окон, вывода текста, операций со строками и т. д. ожидают передачи Unicode-строк. Если какой-то функции Windows передается ANSI-строка, она сначала преобразуется в Unicode и лишь потом передается операционной системе. Если Вы ждете результата функции в виде ANSI-строки, операционная система преобразует строку — перед возвратом в приложение - из Unicode в ANSI. Все эти преобразования протекают скрытно от Вас, но, конечно, на них тратятся и лишнее время, и лишняя намять.

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

Для функций, заполняющих строками выделенные буферы, системе — прежде чем программа сможет их обрабатывать — нужно преобразовать строки из Unicode в ANSI. Из-за этого Ваше приложение потребует больше памяти и будет работать медленнее. Поэтому гораздо эффективнее разрабатывать программу, с самого начала ориентируясь на Unicode.

Windows 98 и Unicode
Windows 98 — не совсем новая операционная система. У нее «16-разрядное наследство, которое не было рассчитано на Unicode. Введение поддержки Unicode в Windows 98 было бы слишком трудоемкой задачей, и при разработке этой операционной системы от нее отказались. По этой причине вся внутренняя обработка строк в Windows 98, как и у ее предшественниц, построена на применении ANSI.
И все же Windows 98 допускает работу с приложениями, обрабатывающими символы и строки в Unicode, хотя вызов функций Windows при этом заметно усложняется. Например, если Бы, обращаясь к CreateWindowEx, передаете ей ANSI-строки, вызов проходит очень быстро — не требуется ни выделения буферов, ни преобразования строк. Но для вызова CreateWindowEx с Unicode-строками Вам придется самому выделять буферы, явно вызывать функции, преобразующие строки из Unicode в ANSI, обращаться к CreateWindowEx, снова вызывать функции, преобразующие строки — на этот раз ил ANSI в Unicode, и освобождать временные буферы. Так что в Windows 98 работать с Unicode не столь удобно, как в Windows 2000. Подробнее о преобразованиях строк в Windows 98 я расскажу в конце главы.

Хотя большинство Unicode-функций в Windows 98 ничего не делает, некоторые
все же реализованы

Windows CE и Unicode
Операционняя система Windows CE создана для небольших вычислительных устройств — бездисковых и с малым объемом памяти. Вы вполне могли бы подумать, что Microsoft, раз уж эту систему нужно было сделать предельно компактной, в качестве «родного» набора символов выберет ANSI. Но Microsoft поступила дальновиднее. Зная, что вычислительные устройства с Windows CE будут продаваться по всему миру, там решили сократить затраты на разработку программ, упростив их локализацию. Поэтому Windows CE полностью поддерживает Unicode.

Чтобы не увеличивать ядро Windows CE, Microsoft вообще отказалась от поддержки ANSI-функций Windows. Так что, ссли Вы пишете для Windows CE, то просто обязаны разбираться в Unicode и использовать его во всех частях своей программы.


Ну и самое важное:

Цитата

В чью пользу счет?
Для тех, кто ведет счет в борьбе Unicode против ANSI, я решил сделать краткий обзор История Unicode в Microsoft:

Windows 2000 поддерживает Unicode и ANSI — Вы можете использовать любой стандарт; 
Windows 98 поддерживает только ANSI — Вы обязаны программировать в расчете на ANSI; 

Windows CE поддерживает только Unicode — Вы обязаны программировать в расчете на Unicode. 
Несмотря на то что Microsoft пытается облегчить написание программ, способных работать на всех трех платформах, различия между Unicode и ANSI все равно создают проблемы, и я сам не раз с ними сталкивался. Не поймите меня неправильно, но Microsoft твердо поддерживает Unicode, поэтому я настоятельно рекомендую переходить именно на этот стандарт. Только имейте в виду, что Вас ждут трудности, на преодоление которых потребуется время. Я бы посоветовал применять Unicode и, если Вы работаете в Windows 98, преобразовывать строки в ANSI лишь там, где без этого нс обойтись.


PM WWW   Вверх
Daevaorn
Дата 28.2.2007, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(vitlic @  28.2.2007,  23:44 Найти цитируемый пост)
Полез за тяжелой артилерией)

да. тоже что и в msdn
PM MAIL WWW   Вверх
vitlic
Дата 28.2.2007, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 22.2.2007
Где: где home(){return где="тут"}

Репутация: 1
Всего: 1



Цитата(Daevaorn @ 28.2.2007,  22:46)
Цитата(vitlic @  28.2.2007,  23:44 Найти цитируемый пост)
Полез за тяжелой артилерией)

да. тоже что и в msdn

Так ведь MSDN и Рихтер едины  smile 

А вообще я по вашей ссылке не ходил, подумал, что вы просто ссылку на msdn.com дали.. Оказалось зря)
PM WWW   Вверх
Vyacheslav
Дата 28.2.2007, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 9
Всего: 59



Цитата(main @  28.2.2007,  18:55 Найти цитируемый пост)
Причем тут C++?? Я писал про- и имел ввиду язык C и опирался на его стандарт.. 


Как причем?

Цитата(main @  28.2.2007,  18:07 Найти цитируемый пост)
Т.е. создаешь кросс-платформенный код? Приведи примеры кроссплатформенных классов..

А что, на языке С уже можно писать классы?

А в цитате ниже Вы тоже не уточняете . что  "конкретный язык" - это конкретный С 
Цитата(main @  28.2.2007,  17:37 Найти цитируемый пост)
Думаю ознакомиться с OS Internals необходимо перед чтением книги про конкретный язык, чтобы знать и понимать о чем идет речь. Ведь часто описываються операции с файлами, ввод/вывод. А это уже зависимые от конкретной системы вещи..


Ну и я не силен в стандарте языка С, но предполагаю, что работа с файлами там тоже стандартизирована.

В последнее время, кстати, я занимаюсь тем, что пишу кроссплатформенные приложения для Windows/Linux/HP-UX/Solaris.  И могу сказать, что больше всего меня напрягают не особенности платформ, а различия в компиляторах. И что особенно удивительно, мне удается написать приложения при том, что не считаю себя большим знатаком WInApi или POSIX. Оказалось, что для написания хорошего приложения достаточно добротного знания "конкретного языка" и умения пользоваться MSDN или man smile 




--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Daevaorn
Дата 28.2.2007, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(vitlic @  28.2.2007,  23:51 Найти цитируемый пост)
Так ведь MSDN и Рихтер едины  

да. мне кажется, что MS поступила абсолютно правильно, сделав UNICODE как бы стандартом. Я за то чтобы как можно большее количество разработчиков перешли на него, т.к. сам активно его применяю и понимаю всё удобство.
PM MAIL WWW   Вверх
MAKCim
Дата 1.3.2007, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



цитата из Руссинович/Соломон
Цитата

Windows отличается от большинства других операционных систем тем, что в качестве внутреннего формата для хранения и обработки текстовых строк использует Unicode.
...
Поскольку многие приложения имеют дело с 8-битными ANSI-символами, Windows-функции, принимающие строковые параметры, существуют в двух версиях: для Unicode и для ANSI. В Windows 95, Windows 98 и Windows ME реализована лишь часть Unicode-версий Windows-функций, поэтому приложения, рассчитаные на выполнение как в одной из этих операционных систем, так и в NT-подобных Windows, обычно используют ANSI-версии функций. Если вы вызываете ANSI-версию Windows-функции, входные строковые параметры перед обработкой системой преобразуются в Unicode, а выходные - из Unicode в ANSI.
...



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
S.A.G.
Дата 1.3.2007, 00:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


не эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1339
Регистрация: 20.7.2006
Где: in ad equate

Репутация: нет
Всего: 19



Цитата(MAKCim @ 1.3.2007,  00:16)
цитата из Руссинович/Соломон
Цитата

Windows отличается от большинства других операционных систем тем, что в качестве внутреннего формата для хранения и обработки текстовых строк использует Unicode.
...
Поскольку многие приложения имеют дело с 8-битными ANSI-символами, Windows-функции, принимающие строковые параметры, существуют в двух версиях: для Unicode и для ANSI. В Windows 95, Windows 98 и Windows ME реализована лишь часть Unicode-версий Windows-функций, поэтому приложения, рассчитаные на выполнение как в одной из этих операционных систем, так и в NT-подобных Windows, обычно используют ANSI-версии функций. Если вы вызываете ANSI-версию Windows-функции, входные строковые параметры перед обработкой системой преобразуются в Unicode, а выходные - из Unicode в ANSI.
...

именно на нее я и ссылался


--------------------
Вот она задачка: спасти себя от себя самого © Cube
Sometimes good people do evil things © A Simple Plan
PM   Вверх
nerezus
Дата 1.3.2007, 06:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 3
Всего: 43



Цитата

Причем тут C++?? Я писал про- и имел ввиду язык C и опирался на его стандарт..
 Но при этом говорил про классы?   smile 


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Earnest
Дата 1.3.2007, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Цитата(dumb @  28.2.2007,  22:07 Найти цитируемый пост)
ой. а это исходя из чего такой вывод сделан? 

Из того, что он доступен и меньше по размеру, чем UNICODE.

Цитата(Daevaorn @  1.3.2007,  00:56 Найти цитируемый пост)
да. мне кажется, что MS поступила абсолютно правильно, сделав UNICODE как бы стандартом.

Конечно, только это вовсе не тот набор симоволов, о котором говорится в цитате из Пратта. Если бы UNICODE стал "основным набором" тогда, действительно, от однобайтовых чаров пришлось бы отказаться... Теория теорией, а кто на это пойдет, да и зачем?
UNICODE - стандартный формат обмена текстовой информацией, а не "основной набор символов" OS.

И по теме: я считаю, что некоторое представления о ЯП весьма полезно при чтении книги об операционках. Равно как и наоборот. 
Читайте и изучайте одновременно, кто мешает? Кроме того, можно параллельно читать детективы или фэнтези, по вкусу  smile 




--------------------
...
PM   Вверх
Rockie
Дата 1.3.2007, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 23.4.2006

Репутация: 8
Всего: 31



Цитата(Fazil6 @  28.2.2007,  16:21 Найти цитируемый пост)
язык программирования никак с ОС не связан.

[offtop]
У нас сейчас довольно жесткие репрессии по поводу лицензионного/нелицензионного ПО. Так вот некоторые юзвери перескакивают с windows на unix-системы. В знакомой фирме разработчики вслед за изменением рынка пересаживаются на Java. Так что, как показывает практика, все таки связан.
[/offtop]


--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
S.A.G.
Дата 1.3.2007, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


не эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1339
Регистрация: 20.7.2006
Где: in ad equate

Репутация: нет
Всего: 19



Earnest,
Цитата
Конечно, только это вовсе не тот набор симоволов, о котором говорится в цитате из Пратта.

О каком тогда наборе говорил Прата?


--------------------
Вот она задачка: спасти себя от себя самого © Cube
Sometimes good people do evil things © A Simple Plan
PM   Вверх
Страницы: (4) Все 1 2 [3] 4 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0649 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.