А разве 8 уже вышла?jangle писал(а):Работает, 8 версия мало чем отличается от 7, если не юзать метро
jangle писал(а):То что работает это понятно, интересно другое, можно будет ли из VB6 юзать WinRT? Или только из VB.NET.
Если последнее, то использовать VB6 в Win8 нет никакого смысла.
bon818 писал(а):Почему нет смысла? Непонял?
Хорошо, пусть это новая модель, но по крайней мере в восьмерке она скорее будет сосуществовать с традиционными WinApi и COM.
jangle писал(а):Что-то типа нативного дотнета.
jangle писал(а):Потом асинхронность вызова функций, чего нет в WinAPI
Все наверное зависит от того, что считать нативным дотнетом, я например подумал, что это будет часть ОС, которая будет работать по принципу дотнета. И опять же даже если взять текущее состояние дел, то дотнетовские приложения (или их части) для увеличения быстродействия компилируются в нативный код, находящийся потом в папке C:\WINDOWS\assembly. И даже если я ошибаюсь, то ничего не мешает один раз скомпилировать эти функции ОС в нативный код. Разве не так?Хакер писал(а):Никакого нативного дотнета не будет. Потому что процессор умеет выполнять только свой машинный код.
Хакер писал(а):Никакого нативного дотнета не будет. Потому что процессор умеет выполнять только свой машинный код.
Никакого асинхронного вызова функций, которые сейчас невозможно вызывать асинхронно, тоже не будет. Потому что вызываемый ядерный сервис работает в контексте того же потока, который вызвал этот сервис. Для асинхронности нужно, чтобы потока было два: в одном бы выполнялся ядерный сервис, второй бы ждал вызова.
И вообще асинхронный вызов ядерных сервисов никому нанфиг не нужен. Такое нужно исключительно в однопоточных системах. В системе, позволяющей процессу быть многопоточным, любое количество вызовов делается «асинхронным», просто перенеся эти вызовы в отдельный поток.
jangle писал(а):Будет упорядоченная объектная модель классов WinRT, вместо каши апишных функций. Программирование станет намного проще, никакие хидеры и объявления апишных функций больше не нужны.
jangle писал(а):Похоже тут имеется ввиду, что будет событийная модель WinRT. Например при сохранении большого файла не нужно ждать пока он запишется на диск, система займется сохранением не блокируя основной поток приложения, а когда сохранит, WinRT вызовет соответствующее событие у приложения
Хакер писал(а):jangle, ты, по ходу, не знаешь, зачем нужны хидеры, и почему они восхитительны как явление. Так что, пожалуйста, без этих рассуждений с позиции «не понимаю глубокой сути вещей, но мнение имею».
WinRT (Windows Runtime – the Metro API)
“Language Projection” is what they’re calling the layer between the language and the kernel services. It maps a language onto the underlying API’s, reflection and type system (the metadata).
They are dropping the least-common-denomenator “CLI” system and instead are mapping things as close as possible to the language you’re using.
Example: on an array returned by the core, C# uses “.Add()” to add an item, whereas Javascript uses “.append()”. I like this. Least common denominator probably wasn’t working out for them anyway because nobody really cared about making things VB-compatible when writing libraries in C#.
WinRT types are automatically adapted to the language. For example getting an array back from WinRT will come back to C# as an IList<T>, done through adaptors but not by making a new list (no copying). In C++ they have adaptors to get it into STL iterator form, etc.
Кроме взгляда с позиции понимаю/не понимаю сути, есть еще банальная и очень субъективная нравится или не нравится, поэтому можно иметь мнение именно с этой позиции или с любой другой. Мне например наличие/отсутствие хидеров видится совсем не важным. В чем то этот инструмент безусловно удобен, можно например подправить типы, под свои узко специфичные нужды или очень удобно вместо кучи объявлений, как это делается в VB, просто взять и подключить нужные хидеры ни на что особо не заморачиваясь. И почему они восхитительны как явление я например вообще не представляю, ибо я отношусь к этому, не как к явлению, а как к простому инструменту, который может быть удобным в одном случае и совершенно неудобным в других. Но узнать почему они восхитительны, как явление знать конечно хотелось бы.Хакер писал(а):jangle, ты, по ходу, не знаешь, зачем нужны хидеры, и почему они восхитительны как явление. Так что, пожалуйста, без этих рассуждений с позиции «не понимаю глубокой сути вещей, но мнение имею».
Что за такая утиная типизация? И почему это катастрофа и собственно для кого? Мне все эти новшества потенциально не нравятся, по одной простой и банальной причине, все что изучалось до этого в большей своей массе будет бесполезным хламом в голове и вновь начнется погоня за ускользающим, а мне это жутко надоело и тут дело даже не в программировании, в том что придется ко всему приспосабливаться - даже как простому пользователю, не говоря уже о таких вещах как администрирование и программирование. И вот для меня именно этот повод к расстройству, а у других может быть все совсем по другому.Хакер писал(а):Однако это совершенно повод не радоваться, а повод расстраиваться. И дело тут даже не в (совсем не в) ностальгии по классическому программированию, а в том, что утиная типизация — это катастрофа.
А по мне, так пускай грянет большая катастрофа, да по ядреней , может тогда эксперименты закончатся, а может и монополии MS потихоньку каюк наступит, хотя в этом случае неразберихи может стать еще больше.jangle писал(а):Не думаю, что Майкрософт допустит катастрофу.
ger_kar писал(а):Что за такая утиная типизация?
ger_kar писал(а):И почему это катастрофа и собственно для кого?
a = 1;
... много строк кода ...
//Надо увеличить a на 2. Нечаянно допускаем опечатку:
A = a + 2;
... ещё много строк кода ...
//Выведет не "3", как ожидалось, а "1"
echo a;
Как заставить неправильный код выглядеть правильно писал(а):Способ написать действительно надежный код состоит в том, чтобы пытаться использовать простые инструменты, которые учитывают типичную человеческую ненадежность, а не сложные инструменты со скрытыми побочными эффектами и дырявыми абстракциями, которые требуют безошибочности программиста.
extern "user32", TranslateMessage
extern "user32", DispatchMessageA
extern "user32", DefWindowProcA
extern "user32", PostQuitMessage
AppName: db "ASM Window", 0
WindowTitle: db "My first ASM window", 0
hInstance: dd 0
hCursor: dd 0
hWnd: dd 0
wMsg: dd 0
COLOR_APPWORKSPACE equ 12
SIZEOF_WNDCLASS equ 40
SIZEOF_MSG equ 28
WM_DESTROY equ &H2
IDC_ARROW equ &H7F00
Ну, того же самого можно достичь и другими средствами, а не только хидерами. В этом плане TLB более продвинутый и гораздо более удобный инструмент. Если и дальше двигаться в этом направлении, то можно и от хидеров вообще отказаться.Хакер писал(а):h-файлы замечательны, потому что единственное, зачем они нужны, это чтобы не описывать прототипы кучи API-функций в каждом вашем исходнике.
Ну вообще развитие ассемблеров и в частности MASM привнесло в них некоторые элементы, свойственные языкам высокого уровня, включая и типизацию, она конечно по сравнению с ЯВУ примитивна, но тем не менее есть. Например Invoke в MASM осуществляет контроль за передаваемыми в процедуру параметрами, и если попробовать передать параметр неправильного размера (по сути типа), то компилятор будет на это ругаться.Хакер писал(а):В ассемблере нет типизации в принципе. Типизация — удел высокоуровневых языков.
ger_kar писал(а):Ну вообще развитие ассемблеров и в частности MASM привнесло в них некоторые элементы ...
Например Invoke в MASM ...
ger_kar писал(а):неправильного размера (по сути типа)
Хакер писал(а): вы писали этот код будучи уставшим . . .
Хакер писал(а):И значит эта супер-примитивная ошибка так инеостанется неотловленной.
ger_kar писал(а):Например Invoke в MASM осуществляет контроль за передаваемыми в процедуру параметрами, и если попробовать передать параметр неправильного размера (по сути типа), то компилятор будет на это ругаться.
invoke ExitProcess, eax
invoke ExitProcess, al
В этом случае ничего не проконтролирует, ибо размер одинаков, но я собственно и не утверждал, что в ассемблере жесткий контроль типов, но и то, что его вовсе нет, тоже считаю неверным, потому, что он хоть и примитивный, но имеется. Т.е. в ассемблере имеется элементарный контроль типов основанный на их размерности, не более того. Контроль настолько примитивный, что он даже не различает знаковые и без знаковые операнды, не говоря уже о большем.iGrok писал(а):Вот ну ни разу ни "по сути". Только размер и контролируется.Обратиться к приведённому Хакером примеру хотя бы. Что HWND, что указатель на FLASHWINFO занимают 4 байта (на 32битной архитектуре, по крайней мере). И что там твой Invoke проконтролирует?!
ВнатуреFireFenix писал(а):да ладно?
;Объяви прототип функции
Search PROTO :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :WORD
;Потом опиши саму функцию типа того
Search PROC pMemBeg:DWORD, pMemEnd:DWORD, wArrBound:DWORD, pArrDword:DWORD, pArrByte:DWORD, wLenStrings:WORD
RET
Search endp
Сейчас этот форум просматривают: Google-бот, SemrushBot и гости: 3