Форум: "Прочее";
Текущий архив: 2009.06.21;
Скачать: [xml.tar.bz2];
Вниз.Net Compact Framework Найти похожие ветки
← →
oxffff © (2009-04-14 14:20) [40]Один из представителей в посте [12]. Я его не просил комментировать свои посты
Посмотри как он описал свои достижения
> Я свою уже года три назад демонстрировал кое-кому из формумчан.
> Свидетелей привлечь можно. Используется до сих пор в известной
> компании для автоматизации деятельности агентов
Грустно.
← →
Игорь Шевченко © (2009-04-14 14:31) [41]Мастер Фу и десять тысяч строк.
Однажды мастер Фу сказал заезжему программисту: "В одной строке кода shell-сценария больше духа Unix, чем в десяти тысячах строк на языке С!".
Программист, гордый своими познаниями в Сб ответил: "Может ли быть такое? Ведь С - язык, в котором реализовано само ядро Unix!"
На это мастер Фу ответил: "Это так. Тем не менее, в одной строке кода shell-сценария больше духа Unix, чем в десяти тысячах строк С!"
Программист выглядел удрученным. "Но ведь через язык С мы познаем просвещенность патриарха Ричи! Мы уподобляемся человеку с операционной системой и компьютеру, который получает непревзойденную производительность!"
Мастер фу сказал: "То, что ты говоришь, правда. Однако в одной строке кода shell-сценария больше духа Unix, чем в десяти тысячах строк С!".
Программист усмехнулся и поднялся, чтобы удалиться. Но мастер Фу кивнул своему ученику Ньюби, который писал строку shell-кода на стоящей рядом белой доске, и сказал: "Господин программист, посмотрите на этот конвейер! На заняла бы его реализация на С десять тысяч строк?"
Просматривая то, что писал Ньюби, программист что-то бромотал в бороду. В конце концов он согласился, что эта так.
"И сколько часов потребовалось бы вам для реализации и отладки этой программы на языке С?"
"Много", - признал заезжий программист. "Но только безумец стал бы тратить столько времени, когда его ждет множество более достойных задач".
"Так кто лучше понимает дух Unix?" - спросил мастер Фу. "Тот, ктопишет десять тысяч строк, или тот, кто сознавая тщетность этих усилий, извлекает пользу не программируя?"
Услышав это, программист достиг просветления.
(с) "Корни без корней: Unix-коаны мастера Фу"
← →
Kerk © (2009-04-14 15:28) [42]
> Sergey Masloff (13.04.09 21:04) [31]
> Real © (14.04.09 13:32) [37]
Да, я сейчас, пока не поздно, мучительно выбираю между триальной "про" студией и #develop. Сначала я в #develop этот функционал и не разглядел.
← →
Городской Шаман (2009-04-14 15:31) [43]
> tesseract © (14.04.09 11:22) [36]
>
>
> > Для мобильных устройств (Windows Mobile) нет ничего лучше
> > C/C++.
>
>
> Угу, для нормальной работы приходится вспоминать MFC и юзать
> Embeded Visual Studio. Которая последний раз обновлялась
> до выхода XP ещё.
Ну зачем же вспоминать эти кошмары MFC, когда есть нормальный WxWidgets, который тоже бесплатный.
← →
Городской Шаман (2009-04-14 15:40) [44]
> Игорь Шевченко © (14.04.09 14:31) [41]
>
> Мастер Фу и десять тысяч строк.
Правильно, нужно использовать С++, там одним только template можно такие вещи творить, что 10000 программистов не разберутся.
← →
DVM © (2009-04-14 16:27) [45]
> tesseract © (14.04.09 11:22) [36]
>
>
> > Для мобильных устройств (Windows Mobile) нет ничего лучше
> > C/C++.
>
>
> Угу, для нормальной работы приходится вспоминать MFC и юзать
> Embeded Visual Studio. Которая последний раз обновлялась
> до выхода XP ещё.
Зачем Embeded Visual Studio. Последние версии MS Visual Studio позволяют писать на C++ под Windows Mobile.
← →
Real © (2009-04-14 16:59) [46]
> Подобными вопросами(и многими многими другими) я занимаюсь
> в свободное время для повышения собственной квалификации
Ну так ради бога, занимайтесь чем угодно в свободное время. Вопрос же был задан - посоветуйте бесплатное средство для РАБОТЫ (реальной, работы) а не "как мне провести свободное время и повысить квалификацию". Вы щас просто элементарно съезжаете ;)
> большинство .NET разработчиков понятия не имеют что такое
> controlled mutability pointer
Вам уже ответили на похожие заявления: пишите тогда на асме. Тогда для ЛЮБОГО расширения функциональности готовой программы, вам будет достаточно какого-нибудь hview. На мой взгляд, ЯВУ должен максимально абстрагироваться от низкоуровневых операций с памятью, предоставляя широкие возможности в рамках ООП. Если я столкнусь с задачей, когда потребуется редактирование CIL-кода - ну так открою справочник и буду разбираться. А какой смысл брать на себя работу компилятора, если это более чем вероятно мне не понадобится никогда? Вы правильно сказали - для общего развития эти знания лишними не будут. Но вы же пытаетесь позиционировать что вообще нужно программировать на CIL, это же просто смешно.
← →
oxffff © (2009-04-14 19:30) [47]
> Real © (14.04.09 16:59) [46]
Ответ очень простой, вы сравните файлы на выходе от .NET и от native delphi. Вы не замечаете существенную разницу в размере?
Поэтому приводимый пример asm x86 это не совсем удачное сравнение.
Идея очень простая, поскольку набор IL команд ограничен. Весь функционал это вызовы методов объектов с нужным функционалом.
Весь .net код, это по большому счету вызовы функций, методов других сборок и native реализаторов. Вызов метода я привел, описание класса я привел. Сопоставимо с кодом на С#. Единственное, что может поставить в тупик начинающего, это реализация типовых конструкций If, for ...(но начинающим естественно не следует). Но в этой ветке далеко не начинающие. Поэтому утвреждение, что программирование на IL - это дурдом по поему глубокому убеждению является некорректным.
Однако я всегда открыт и готов к обсуждению.
← →
Real © (2009-04-15 02:47) [48]Что тут обсуждать, ваша точка зрения ясна. Я - мазохизм не люблю, поэтому придерживаюсь обратной точки зрения. Все что может быть автоматизировано средой, все что дает удобство и скорость (в том числе и в обучении) необходимо свалить на плечи машины
← →
Eraser © (2009-04-15 03:41) [49]> [47] oxffff © (14.04.09 19:30)
> Поэтому утвреждение, что программирование на IL - это дурдом
> по поему глубокому убеждению является некорректным
огорчу, если программирование на ассемблере еще может, в некоторых случаях, себя оправдать даже для win32, то программирование реальных проектов на IL это мазохизм, увы.
надеюсь как переводится Intermediate вы вкурсе?
← →
oxffff © (2009-04-15 08:50) [50]
> Eraser © (15.04.09 03:41) [49]
> > [47] oxffff © (14.04.09 19:30)
>
>
> > Поэтому утвреждение, что программирование на IL - это
> дурдом
> > по поему глубокому убеждению является некорректным
>
> огорчу, если программирование на ассемблере еще может, в
> некоторых случаях, себя оправдать даже для win32, то программирование
> реальных проектов на IL это мазохизм, увы.
>
Откуда такие выводы?
Может стоило исследовать для начала то, что можно на IL asm,
и нельзя на С#?
> надеюсь как переводится Intermediate вы вкурсе
1. Переводится как промежуточный.
2. Переводится в коды целевой платформы с использованием peephole оптимизации. Я надеюсь вам известно, что такое peephole оптимизация.
← →
Eraser © (2009-04-15 13:35) [51]> [50] oxffff © (15.04.09 08:50)
> Может стоило исследовать для начала то, что можно на IL
> asm,
> и нельзя на С#?
у IL не интуитивно-понятный синтаксис базовых конструкций и этот язык знает очень мало людей, особенно в совершенстве. каких-то значительных плюсов, по сравнению с тем же C# этот язык не дает. т.е. получается, что IL использовать можно, но в одиночку и под одеялом. для командной разработки - не годится.
← →
Real © (2009-04-15 13:37) [52]
> Может стоило исследовать для начала то, что можно на IL
> asm,
> и нельзя на С#?
Примеры в студию, с указанием в каких именно проектах это применялась. Вас уже на раз спросили, где примеры проектов? Потому что понять вас сложно: то вы говорите что IL вам нужен для досуга с пользой, то настаиваете что это единственный правильный язык на котором нужно писать всем. Уж определитесь. И покажите что конкретно вы сделали кроме тестовых примеров целиком на IL?
P.S. Мне иногда думается, что статью "Настоящие мужчины не используюсь Паскаль" надо запрещать как и порно по возрастному признаку. Чтоб поменьше вывернутых мозгов было :)
← →
oxffff © (2009-04-15 14:25) [53]
> Real © (15.04.09 13:37) [52]
Что касаемо примеров проектов.
Могу только ответить, что это сборки от Microsoft.
> Потому что понять вас сложно: то вы говорите что IL вам
> нужен для досуга с пользой,
Да именно так.
>то настаиваете что это единственный
> правильный язык на котором нужно писать всем.
Где я такое сказал?
Я сказал, что синтаксис у IL asm в некоторых моментах сложнее(для начинающих), но не на порядок.
Также сказал, что есть возможности которых нет в С#.
P.S. Может следует ознакомится для начала.
Могу литературу рекомендовать.
Expert .NET 2.0 IL Assembler Serge Lidin.
А то не зная языка начинаете говорить, что это так сложно.
Что ну его ...
Ознакомившись с набором инструкций вам не покажется
он таким уж сложным.
3.1 add – add numeric values 33
3.2 add.ovf.<signed> – add integer values with overflow check 34
3.3 and – bitwise AND 35
3.4 arglist – get argument list 36
3.5 beq.<length> – branch on equal 37
3.6 bge.<length> – branch on greater than or equal to 38
3.7 bge.un.<length> – branch on greater than or equal to, unsigned or unordered 39
3.8 bgt.<length> – branch on greater than 40
3.9 bgt.un.<length> – branch on greater than, unsigned or unordered 41
3.10 ble.<length> – branch on less than or equal to 42
3.11 ble.un.<length> – branch on less than or equal to, unsigned or unordered 43
3.12 blt.<length> – branch on less than 44
3.13 blt.un.<length> – branch on less than, unsigned or unordered 45
3.14 bne.un<length> – branch on not equal or unordered 46
3.15 br.<length> – unconditional branch 47
3.16 break – breakpoint instruction 48
3.17 brfalse.<length> – branch on false, null, or zero 49
3.18 brtrue.<length> – branch on non-false or non-null 50
3.19 call – call a method 51
3.20 calli – indirect method call 53
3.21 ceq – compare equal 54
3.22 cgt – compare greater than 55
3.23 cgt.un – compare greater than, unsigned or unordered 56
3.24 ckfinite – check for a finite real number 57
3.25 clt – compare less than 58
3.26 clt.un – compare less than, unsigned or unordered 59
3.27 conv.<to type> – data conversion 60
3.28 conv.ovf.<to type> – data conversion with overflow detection 61
3.29 conv.ovf.<to type>.un – unsigned data conversion with overflow detection 62
3.30 cpblk – copy data from memory to memory 63
3.31 div – divide values 64
3.32 div.un – divide integer values, unsigned 65
3.33 dup – duplicate the top value of the stack 66
3.34 endfilter – end exception handling filter clause 67
3.35 endfinally – end the finally or fault clause of an exception block 68
3.36 initblk – initialize a block of memory to a value 69
3.37 jmp – jump to method 70
3.38 ldarg.<length> – load argument onto the stack 71
3.39 ldarga.<length> – load an argument address 72
3.40 ldc.<type> – load numeric constant 73
3.41 ldftn – load method pointer 74
3.42 ldind.<type> – load value indirect onto the stack 75
3.43 ldloc – load local variable onto the stack 77
3.44 ldloca.<length> – load local variable address 78
3.45 ldnull – load a null pointer 79
3.46 leave.<length> – exit a protected region of code 80
3.47 localloc – allocate space in the local dynamic memory pool 81
3.48 mul – multiply values 82
3.49 mul.ovf.<type> – multiply integer values with overflow check 83
3.50 neg – negate 84
3.51 nop – no operation 85
3.52 not – bitwise complement 86
3.53 or – bitwise OR 87
3.54 pop – remove the top element of the stack 88
3.55 rem – compute remainder 89
3.56 rem.un – compute integer remainder, unsigned 91
3.57 ret – return from method 92
3.58 shl – shift integer left 93
3.59 shr – shift integer right 94
3.60 shr.un – shift integer right, unsigned 95
3.61 starg.<length> – store a value in an argument slot 96
3.62 stind.<type> – store value indirect from stack 97
3.63 stloc – pop value from stack to local variable 98
3.64 sub – subtract numeric values 99
3.65 sub.ovf.<type> – subtract integer values, checking for overflow 100
3.66 switch – table switch based on value 101
3.67 xor – bitwise XOR 102
4 Object model instructions 103
4.1 box – convert a boxable value to its boxed form 104
4.2 callvirt – call a method associated, at runtime, with an object 105
4.3 castclass – cast an object to a class 106
4.4 cpobj – copy a value from one address to another 107
4.5 initobj – initialize the value at an address 108
4.6 isinst – test if an object is an instance of a class or interface 109
4.7 ldelem – load element from array 110
4.8 ldelem.<type> – load an element of an array 111
4.9 ldelema – load address of an element of an array 113
4.10 ldfld – load field of an object 114
4.11 ldflda – load field address 115
4.12 ldlen – load the length of an array 116
4.13 ldobj – copy a value from an address to the stack 117
4.14 ldsfld – load static field of a class 118
4.15 ldsflda – load static field address 119
4.16 ldstr – load a literal string 120
4.17 ldtoken – load the runtime representation of a metadata token 121
4.18 ldvirtftn – load a virtual method pointer 122
4.19 mkrefany – push a typed reference on the stack 123
4.20 newarr – create a zero-based, one-dimensional array 124
4.21 newobj – create a new object 125
4.22 refanytype – load the type out of a typed reference 126
4.23 refanyval – load the address out of a typed reference 127
4.24 rethrow – rethrow the current exception 128
4.25 sizeof – load the size, in bytes,of a type 129
4.26 stelem – store element to array 130
4.27 stelem.<type> – store an element of an array 131
4.28 stfld – store into a field of an object 132
4.29 stobj – store a value at an address 133
4.30 stsfld – store a static field of a class 134
4.31 throw – throw an exception 135
4.32 unbox – convert boxed value type to its raw form 136
4.33 unbox.any – convert boxed type to value 137
← →
Real © (2009-04-15 17:15) [54]
> Что касаемо примеров проектов.
> Могу только ответить, что это сборки от Microsoft.
Понятно, показать нечего. Отчасти из-за этого, ваши посты звучат очень голословно и неубидительно, особенно когда вы говорите о простоте, скорости и т.п.
> Где я такое сказал?
oxffff © (12.04.09 17:37) [9]
Ваш ответ на вопрос на чем нужно писать. Заметьте, ответ краткий и конкретный. Нет оговорок что это приколько только для досуга, это ваша рекомендация как основное средство (во всяком случая мне кажется что только так это можно понять, раз нет комментариев. И кажется не только мне, ведь именно этот пост и породил дальнейшие разговоры о целесообразности).
> Также сказал, что есть возможности которых нет в С#.
Второй раз прошу, примеры в студию
← →
oxffff © (2009-04-15 23:40) [55]
> Real © (15.04.09 17:15) [54]
Вы требуете от меня объяснить как писать на IL.
Я уже привел примеры кода.
Достаточно внимательно посмотреть этот код.
Чтобы понять что он делает. И в тоже время понять что код на С# будет не на порядок меньше
> Ваш ответ на вопрос на чем нужно писать. Заметьте, ответ
> краткий и конкретный. Нет оговорок что это приколько только
> для досуга, это ваша рекомендация как основное средство
> (во всяком случая мне кажется что только так это можно понять,
> раз нет комментариев. И кажется не только мне, ведь именно
> этот пост и породил дальнейшие разговоры о целесообразности).
>
Во дела. Это ваши личные умозаключения. Прошу заметить не мои.
Все гораздо проще.
Был вопрос
Какое бесплатное средство умеет компилить под сабж?
Я дал ответ. На вопрос дан ответ. Поскольку предлаги несколько вариантов. Я дал один из тех, о которых не сказали.
Теперь уже мой ответ раздули до такого, что мне самому интересно, как так можно.
> Второй раз прошу, примеры в студию
Внимательно мои посты читали?
oxffff © [20].
Черным по белому написано. Pinned Модификатор.
Далее у вас будет вопрос: Что это?
Ответ
The pinned modifier is applicable to the method’s local variables only. Its use means that the object referenced by the local variable cannot be relocated by the garbage collector and must stay put throughout the method execution. If a local variable representing an object reference or a managed pointer is “pinned,” it is safe to convert it to an unmanaged pointer and then to dereference this unmanaged pointer, because the unmanaged pointer is guaranteed to
still be valid when it is dereferenced (it is safe in the sense of dereferencing, but it is still unverifiable, as is any usage of an unmanaged pointer)
Если спросите зачем это?
Могу рекомендовать еще раз книгу выше.
← →
oxffff © (2009-04-15 23:45) [56]
> И кажется не только мне, ведь именно этот пост и породил
> дальнейшие разговоры о целесообразности
Ну собственно это не моя вина, что люди о которых вы говорите,
додумывают что-то, чего нет. :)
← →
oxffff © (2009-04-15 23:50) [57]
> Real © (15.04.09 17:15)
Поэтому коль выяснилось, что я ни кого не принуждал использовать IL. А ответил, что можно использовать эту связку в качестве бесплатного инструмента.
Поэтому можно продолжить дисскусию о пользе и вреде ILASM в сравнении с другими, но в рамках отдельной ветки.
Поэтому если вам интересно. Заведите отдельную ветку.
← →
Real © (2009-04-16 01:06) [58]
> Теперь уже мой ответ раздули до такого
Раздуваешь ты, тебя русским по-белому спрашивают - что ты конкретно сделал на IL, ссылки на проект, чтоб можно было оценить если какие-то преимущества или нет.
> Я уже привел примеры кода.
> Достаточно внимательно посмотреть этот код
Что мне твой код? Ты мне по-русски напиши реальную задачу, с которой в каком-то участке нельзя справиться средствами C#. Понятное дело что ЛЮБОЙ язык низкого уровня имеет возможности превосходящие ЯВУ, однако нужны ли они всегда? Я уже сказал что если встанет такая необходимость, то тогда можно будет покопаться в исходнике на IL.
> А ответил, что можно использовать эту связку в качестве
> бесплатного инструмента
Ну это все равно что на вопрос "посоветуйте девайс для сноса небоскреба" отписать "кирка + лом". Ими безусловно можно уничтожить небоскреб, но стоит ли так даже пробовать? Я не говорю что принуждал, но по-моему очевидно, что на вопрос ждут ответа который можно использовать. А то что в принципе можно писать на IL, я думаю итак все прекрасно знают. Об этом пишется в любой книге по .NET, равно как и описывается сам язык чтобы представить "анатомию".
← →
Вариант (2009-04-16 06:33) [59]
> oxffff © [20].
> Черным по белому написано. Pinned Модификатор.
Пример не тот. Подобное возможно на C#. Например через GCHandle. Возможно есть то (не знаю, но думаю скорее всего так), что можно сделать используя IL ,и что сделать на C# трудно или невозможно. Но если говорить о применении IL для разработки прикладного ПО, то мне понравился пост
> Игорь Шевченко © (14.04.09 14:31) [41]
Хотя вполне возможно, что так же можно сказать и о C# или дельфи по отношению к другим инструментам. В любом случае - выбор инструмента диктуется задачей в первую очередь и потом уже предпочтениями и возможностями исполнителя.
← →
oxffff © (2009-04-16 10:12) [60]
> Real © (16.04.09 01:06) [58]
Ну как говориться каждому свое.
Что касаемо кирки и лома. То для того снести небоскреб, сначала нужно заложить заряды. А чтобы их заложить нужны примитивные инструменты.
← →
oxffff © (2009-04-16 10:14) [61]
> Вариант (16.04.09 06:33) [59]
>
> > oxffff © [20].
> > Черным по белому написано. Pinned Модификатор.
>
> Пример не тот. Подобное возможно на C#. Например через GCHandle.
>
Да твоя правда.
GCHandleType может быть Pinned.
Страницы: 1 2 вся ветка
Форум: "Прочее";
Текущий архив: 2009.06.21;
Скачать: [xml.tar.bz2];
Память: 0.62 MB
Время: 0.008 c