Форум программистов, компьютерный форум, киберфорум
Священные войны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.63/546: Рейтинг темы: голосов - 546, средняя оценка - 4.63
 Аватар для HIMen
4340 / 1509 / 101
Регистрация: 12.04.2009
Сообщений: 2,342
09.10.2010, 19:57
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Evg Посмотреть сообщение
Возможность того или иного зависит не от того, во что компилируется код, а от свойств самогО языка. Чтобы на Си использовать функцию из динамической библиотеки, надо сначала на вызвать функцию dlopen, потом вызвать функцию dlsym и только потом по полученному указателю вызвать функцию. Но ты можешь придумать разновидность языка Си-shaman, в который введёшь конструкцию типа shaman_call ("libmy.so", "myfunc") и у тебя это будет делаться средствами языка. Собственно, вот и вся разница. Нативный код или не нативный - роли не играет вообще никакой
Возьмем лучше с++, а то нет классов - нет проблем.
На с++ можно получить исходный код метода? Перечислить все свойства класса, все методы, подобрать метод с нужной сигнатурой? Определить какие атрибуты применены к ним, получить реализуемые интерфейсы, определить является ли объект классом или структурой, получить и подписаться на события? Динамически скомпилировать код, загрузить сборку и сразу же использовать на уровне ооп, а не на уровне get_func_pointer("func")? Та что там говорить, он из статической библиотеки с трудом класс извлекает.

Цитата Сообщение от Genius Ignat Посмотреть сообщение
Внимание! Unicode
Фраза выдает актуальность com
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.10.2010, 19:57
Ответы с готовыми решениями:

Какой язык программирования лучше? (3)
Продолжение темы

Какой язык программирования лучше? (2)
Продолжение темы. Начало

Какой язык программирования лучше для создания игры???
Какой язык программирования лучше для создания игры, С++ или С#???

991
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
09.10.2010, 20:02
Цитата Сообщение от HIMen Посмотреть сообщение
Фраза выдает актуальность com
ну и к чему такие заявления?
с учетом того, что большинство API и родных объектов поддерживают только юникод
0
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
09.10.2010, 20:32
Возьмем лучше с++, а то нет классов - нет проблем.
На с++ можно получить исходный код метода? Перечислить все свойства класса, все методы, подобрать метод с нужной сигнатурой? Определить какие атрибуты применены к ним, получить реализуемые интерфейсы, определить является ли объект классом или структурой, получить и подписаться на события? Динамически скомпилировать код, загрузить сборку и сразу же использовать на уровне ооп, а не на уровне get_func_pointer("func")? Та что там говорить, он из статической библиотеки с трудом класс извлекает.
Не смотря на это в C++ меня всё устраивает.

Не по теме:


Каждый хвалит своё.



Добавлено через 12 минут

Не по теме:


HIMen:
Эти все эти примочки, знак того что в C# коммерческое начало и за языком есть кому
следить и прикручивать навороты.

0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
09.10.2010, 23:24
Цитата Сообщение от HIMen Посмотреть сообщение
Возьмем лучше с++, а то нет классов - нет проблем.
На с++ можно получить исходный код метода? Перечислить все свойства класса, все методы, подобрать метод с нужной сигнатурой? Определить какие атрибуты применены к ним, получить реализуемые интерфейсы, определить является ли объект классом или структурой, получить и подписаться на события? Динамически скомпилировать код, загрузить сборку и сразу же использовать на уровне ооп, а не на уровне get_func_pointer("func")? Та что там говорить, он из статической библиотеки с трудом класс извлекает.
Можно. Потому что какая в пень разница сделано это в виде нэйтив кода или в виде абстрактного байткода. Вопрос исключительно в удобстве, а не в возможности.

Добавлено через 6 минут
Напомню, что в посте 256 ты заговорил о "нэйтив код" vs "байткод", а не C++ vs C#. И я уже оговаривал, что то или иное преимущество - это особенность языка C#, а не байткода .net. Ровно всё то же самое можно сделать и в нэйтив-коде, реализовав компилятор с некоего расширения стандартных языков программирования
0
Заблокирован
10.10.2010, 07:54
Цитата Сообщение от Evg Посмотреть сообщение
Можно.
А покажи как.

Как это в шарпе:

C#
1
2
3
4
// Выводим имена свойств класса
PropertyInfo[] properties = typeof (MyClass).GetProperties();
foreach (PropertyInfo propInfo in properties)
    Console.WriteLine(propInfo.Name);
C#
1
2
3
4
// Выводим имена методов класса.
MethodInfo[] methods = typeof (MyClass).GetMethods();
foreach (MethodInfo methodInfo in methods)
    Console.WriteLine(methodInfo.Name);
C#
1
2
3
4
5
6
7
8
// Выводим имена методов и для каждого метода имена классов назначенных ему атрибутов.
MethodInfo[] methods = typeof (MyClass).GetMethods();
foreach (MethodInfo methodInfo in methods)
{
    Console.WriteLine("Method '{0}':", methodInfo.Name);
    foreach (Attribute attrib in methodInfo.GetCustomAttributes(true))
        Console.WriteLine("--- {0}", attrib.GetType().Name);
}
C#
1
2
3
4
// Выводим имена интерфейсов, реализованных классом.
Type[] interfaces = typeof (MyClass).GetInterfaces();
foreach (Type iface in interfaces)
    Console.WriteLine(iface.Name);
C#
1
2
3
4
5
// MyClass - это класс?
Console.WriteLine("Is Class? {0}", typeof(MyClass).IsClass);
 
// MyClass - это структура?
Console.WriteLine("Is Struct? {0}", typeof(MyClass).IsValueType);
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
// Динамическое создание прокси-класса.
 
public object CreateProxy()
{
    // Создаём сборку.
    var asmName = new AssemblyName("GlyphProxyAssembly.dll");
    AssemblyBuilder assembly = AppDomain.CurrentDomain.DefineDynamicAssembly(
        asmName, AssemblyBuilderAccess.Run);
    ModuleBuilder moduleBuilder = assembly.DefineDynamicModule(asmName.Name);
 
    // Прокси-класс.
    TypeBuilder typeBuilder = moduleBuilder.DefineType("GlyphProxy" + Guid.NewGuid(), TypeAttributes.Class | TypeAttributes.Public, typeof(object));
    
    // Приватное поле, содержащее ссылку на объект, с которым связан данный прокси.
    FieldBuilder ownerField = typeBuilder.DefineField("_owner", GetType(), FieldAttributes.Private);
 
    // Ищем все поля в данном объекте, помеченные атрибутом ActivePropertyAttribute
    // и создаём соответствующие поля в прокси объекте.
    foreach (var prop in GetType().GetProperties())
        foreach (var attrib in prop.GetCustomAttributes(true))
            if (attrib is ActivePropertyAttribute)
            {
                // Свойство.
                PropertyBuilder propertyBuilder = typeBuilder.DefineProperty(prop.Name,
                    PropertyAttributes.HasDefault,
                    prop.PropertyType,
                    null);
 
                // Геттер.
                MethodBuilder methodGet = typeBuilder.DefineMethod("Get_" + prop.Name,
                    MethodAttributes.Public,
                    prop.PropertyType,
                    new Type[] { });
 
                // Код геттера: берём значение свойства из связанного объекта.
                ILGenerator ilGet = methodGet.GetILGenerator();
 
                ilGet.Emit(OpCodes.Ldarg_0);
                ilGet.Emit(OpCodes.Ldfld, ownerField);
                ilGet.EmitCall(OpCodes.Callvirt, prop.GetGetMethod(), null);
                ilGet.Emit(OpCodes.Ret);
 
                // Сеттер.
                MethodBuilder methodSet = typeBuilder.DefineMethod("Set_" + prop.Name,
                    MethodAttributes.Public,
                    null,
                    new[] { prop.PropertyType });
 
                // Код сеттера: сохраняем значение свойства в связанный объект.
                ILGenerator ilSet = methodSet.GetILGenerator();
 
                ilSet.Emit(OpCodes.Ldarg_0);
                ilSet.Emit(OpCodes.Ldfld, ownerField);
                ilSet.Emit(OpCodes.Ldarg_1);
                ilSet.EmitCall(OpCodes.Callvirt, prop.GetSetMethod(), new[] { prop.PropertyType });
                ilSet.Emit(OpCodes.Ret);
 
                // Назначем геттер и сеттер свойству.
                propertyBuilder.SetGetMethod(methodGet);
                propertyBuilder.SetSetMethod(methodSet);
 
                break;
            }
 
    // Конструктор прокси-класса.
    var ctorParams = new[] { GetType() };
    ConstructorBuilder constructorBuilder = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard, ctorParams);
    ILGenerator ilgen = constructorBuilder.GetILGenerator();
 
    // Вызываем конструктор родителя.
    ilgen.Emit(OpCodes.Ldarg_0);
    ilgen.Emit(OpCodes.Call, typeof(object).GetConstructor(new Type[0]));
 
    // Загружаем ссылку на объект, с которым связан данный прокси в приватное поле.
    ilgen.Emit(OpCodes.Ldarg_0);
    ilgen.Emit(OpCodes.Ldarg_1);
    ilgen.Emit(OpCodes.Stfld, ownerField);
 
    ilgen.Emit(OpCodes.Ret);
            
    // Создаём и возвращаем тип прокси-объекта.
    Type type = typeBuilder.CreateType();
    return Activator.CreateInstance(type, new object[] { this });
}
C#
1
2
3
4
5
// Загружаем сборку и выводим имена классов, объявленных в ней
Assembly asm = Assembly.LoadFrom(@"C:\MakarovPhysics\RELEASE\Makarov.Physics.Shell.exe");
IEnumerable<Type> types = asm.GetTypes().Where(t => t.IsClass);
foreach (Type type in types)
    Console.WriteLine(type.Name);
Ну и т.д.
0
 Аватар для Vladiator
1574 / 645 / 79
Регистрация: 24.02.2009
Сообщений: 9,268
10.10.2010, 09:45
NightmareZ, ну если ты без этого жить не можешь... это плохо. Не знаю, есть ли это в C++, 因为没有什么事情是理解!
у этого языка есть огромный минус - .net framework. Всё. Его достаточно, чтобы я никогда даже не притронулся к этому языку. Зачем на нём программировать, если есть языки, которые не требуют этой штуки?
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
10.10.2010, 10:23
NightmareZ, я не очень понимаю, что делают коды, тобою написанные. Как вариант можно делать так. Компилим код с отладочной информацией, пишем библиотеку, которая ковыряется в отладочной информации и далее выдирает имена методов, как ты это делаешь в первом примере. Ну и так далее. В очередной раз хочу сказать, что сии конструкции - это свойства языка, но не свойства платформы .net, которые нельзя реализовать в компилируемом языке. Точно так можно реализовать группу языков C-buben, C++-buben, Fortran-buben и т.п., сделать к ним компиляторы и посадить на общий API. Получим то же самое, но в нэйтив коде. Т.е. вот эта вся хиромантия, при которой тип становится материальной конструкцией - это свойства исключительно языка C#, а не особенность платформы .net.

В качестве контрпримера приведу конструкцию, которую можно реализовать в компилируемых языках, но нельзя в .net'овских. Это ассемблерная вставка. Нет, теоретически конечно оно реализуемо, но реализация пойдёт в разрез с концепцией переносимости на уровне кода.
0
Заблокирован
10.10.2010, 10:45
Цитата Сообщение от Vladiator Посмотреть сообщение
у этого языка есть огромный минус - .net framework.
Ну вот программы на C# требуют .NET Framework.
А программы на C++ (а именно, скомпиленые Visual C++) требуют C++ Redist Package.
А игры требуют DirectX, а ещё драйвера.
А кино - требует кодеков.
Ну и т.д.

Я к тому, что это совсем не аргумент, особенно учитывая что на Висте по-дефолту установлен третий фреймворк, а на семёрке - 3.5 и в качестве апдейта ставится четвёртый.

Цитата Сообщение от Vladiator Посмотреть сообщение
Его достаточно, чтобы я никогда даже не притронулся к этому языку.
Да какбэ всем побоку на самом то деле. В старые времена мужики говорили "зачем нам этот богомерзкий ассемблер? настоящие программисты пишут в машинных кодах!"

Цитата Сообщение от Vladiator Посмотреть сообщение
Зачем на нём программировать, если есть языки, которые не требуют этой штуки?
Ну так флаг в руки же.
0
 Аватар для Vladiator
1574 / 645 / 79
Регистрация: 24.02.2009
Сообщений: 9,268
10.10.2010, 10:47
Цитата Сообщение от NightmareZ Посмотреть сообщение
Visual C++
самое тупое в своём роде
Цитата Сообщение от NightmareZ Посмотреть сообщение
DirectX
самое тупое в своём роде
Цитата Сообщение от NightmareZ Посмотреть сообщение
на Висте
Цитата Сообщение от NightmareZ Посмотреть сообщение
на семёрке
тоже самое тупое в своём роде
и зачем мне всё это?
0
Заблокирован
10.10.2010, 10:49
Цитата Сообщение от Evg Посмотреть сообщение
NightmareZ, я не очень понимаю, что делают коды, тобою написанные. Как вариант можно делать так. Компилим код с отладочной информацией, пишем библиотеку, которая ковыряется в отладочной информации и далее выдирает имена методов, как ты это делаешь в первом примере. Ну и так далее. В очередной раз хочу сказать, что сии конструкции - это свойства языка, но не свойства платформы .net, которые нельзя реализовать в компилируемом языке. Точно так можно реализовать группу языков C-buben, C++-buben, Fortran-buben и т.п., сделать к ним компиляторы и посадить на общий API. Получим то же самое, но в нэйтив коде. Т.е. вот эта вся хиромантия, при которой тип становится материальной конструкцией - это свойства исключительно языка C#, а не особенность платформы .net.

Вообще-то это свойства именно платформы, а не языка C#

Тебе привести код тех же самых действий на VB.NET, C++/CLI и F#? Или поверишь мне на слово?

Цитата Сообщение от Evg Посмотреть сообщение
В качестве контрпримера приведу конструкцию, которую можно реализовать в компилируемых языках, но нельзя в .net'овских. Это ассемблерная вставка. Нет, теоретически конечно оно реализуемо, но реализация пойдёт в разрез с концепцией переносимости на уровне кода.
Вообще-то это не недостаток, это фича. Если использовать ассемблерные вставки, код станет привязан к платформе, а так в MSIL'е он по сути дела от платформы независим.

Добавлено через 1 минуту
Цитата Сообщение от Vladiator Посмотреть сообщение
самое тупое в своём роде

самое тупое в своём роде

тоже самое тупое в своём роде
и зачем мне всё это?

Так иди на свой уютненький ЛОР и занимайся красноглазием там на православном линупсе. Смысл тут сидеть и обсерать всех пользователей винды?
0
 Аватар для KReedlas
1183 / 805 / 10
Регистрация: 30.08.2010
Сообщений: 2,686
10.10.2010, 10:53
Vladiator, а что же по вашему мнению острое?
0
 Аватар для Vladiator
1574 / 645 / 79
Регистрация: 24.02.2009
Сообщений: 9,268
10.10.2010, 11:09
Цитата Сообщение от NightmareZ Посмотреть сообщение
код станет привязан к платформе
а он разве и так не привязан к платформе?

Добавлено через 1 минуту
Цитата Сообщение от NightmareZ Посмотреть сообщение
Смысл тут сидеть и обсерать всех пользователей винды?
тот же, что и в холливарах. Это не спор, а холливар - они для этого и созданы.
Цитата Сообщение от NightmareZ Посмотреть сообщение
ЛОР
меня там нет и это можно считать ссылкой на форум.
Цитата Сообщение от TRilonX Посмотреть сообщение
а что же по вашему мнению острое?
GCC, OpenGL и Linux
0
 Аватар для HIMen
4340 / 1509 / 101
Регистрация: 12.04.2009
Сообщений: 2,342
10.10.2010, 11:11
Цитата Сообщение от Vladiator Посмотреть сообщение
GCC, OpenGL и Linux
Вот купить MS Adobe....
0
Заблокирован
10.10.2010, 11:26
Цитата Сообщение от Vladiator Посмотреть сообщение
а он разве и так не привязан к платформе?
Ну вообще-то под понятием "платформа" имел ввиду хотя бы процессоры с разной системой команд.

Ты же наверное, хотел спросить, работает ли он под твоим любимым линупсом. Таки да, работает: см. тут
0
 Аватар для Vladiator
1574 / 645 / 79
Регистрация: 24.02.2009
Сообщений: 9,268
10.10.2010, 11:27
Цитата Сообщение от NightmareZ Посмотреть сообщение
Таки да, работает
вероятность работы такой программы очень мала.
0
Заблокирован
10.10.2010, 11:30
Цитата Сообщение от Vladiator Посмотреть сообщение
вероятность работы такой программы очень мала.
Не недо тут вот сейчас словоблудием заниматься. Я тебе показал реально работающий пример моей программы.
0
 Аватар для Vladiator
1574 / 645 / 79
Регистрация: 24.02.2009
Сообщений: 9,268
10.10.2010, 11:30
NightmareZ, я имею в виду не твоей, а любой дотнетной
0
Заблокирован
10.10.2010, 11:35
Цитата Сообщение от Vladiator Посмотреть сообщение
NightmareZ, я имею в виду не твоей, а любой дотнетной
Обоснуешь как-нибудь?
0
 Аватар для Vladiator
1574 / 645 / 79
Регистрация: 24.02.2009
Сообщений: 9,268
10.10.2010, 11:41
Цитата Сообщение от NightmareZ Посмотреть сообщение
Обоснуешь как-нибудь?
обосную. Paint.NET не устанавливается, Mono есть по умолчанию в системе, кроме того, на всякий случай установлен MonoDevelop
0
Заблокирован
10.10.2010, 11:46
Цитата Сообщение от Vladiator Посмотреть сообщение
обосную. Paint.NET не устанавливается, Mono есть по умолчанию в системе, кроме того, на всякий случай установлен MonoDevelop
Я просто набрал два ключевых слова в гугле: paint.net, mono

http://code.google.com/p/paint-mono/
http://tirania.org/blog/archive/2007/May-15-1.html


http://tirania.org/blog/archive/2006/May-19.html

This Paint application despite its young age is quite sophisticated and calls into a number of Win32 libraries to use features not exposed directly by the .NET libraries. For example, it determines the number of CPUs to adjust its thread pool, it uses low-level heap routines from the OS and other things like that.

Я к тому, что не запускается не потому, что написан на шарпе, а потому что используются в программе вызовы Win32 функций.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.10.2010, 11:46

Какой язык программирования мне ст0ит учить?
... оканчивю мат. школу, и хочу поступить на программиста. Программирую (неплохо) на Паскале. Что мне нужно? Може С++? Или...?

Какой язык лучше / прибыльнее?
И так, мне 16 лет, седня днем пойду подавать документы в техникум на программиста соответственно. И назрел вопрос какой язык...

Какой язык веб-программирования выбрать? Плюсы\минусы
Вопрос что ни на есть из раздела священных, но все же... Какой язык веб-программирования кто предпочитает? У кого какие плюсы и...

Какой язык лучше изучать C или C++
Всем здравствуйте! Я новичок в программировании(знаю только Паскаль). Сейчас выбираю, какой язык учить: С или С++. Подскажите, пожалуйста,...

Какой язык лучше изучать с нуля?
Привет Всем!! Ребята подскажите пожалуйста какой язык лучше изучать с нуля ????? За ответ заранее спасибо!!!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
280
Закрытая тема Создать тему
Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru