Delphi/Pascal

screenshot2010102001.png


imho, nuff said.
 
Собственно, этого я и ожидал. Теперь попробуем вначале запустить .NET приложение, и только после этого приаттачиться дебаггером, и...
attachment.png

Вполне логичный результат. Зачем считать, если результат заранее известен?
Теперь смотрим на "годный нативный код" из Delphi, и делаем выводы :іржач:

Не "упс", а только лишь еще один epic fail. И они называют это оптимизирующим компилятором...
 

Вкладення

  • epic_fail_2.png
    epic_fail_2.png
    6.7 КБ · Перегляди: 142
Приаттачь скомпиленое приложение.
 
Я даже сделаю так:
attachment.png


Приаттачь скомпиленое приложение.
Там нет нативного кода, только такое:
Код:
.method private hidebysig instance int32 f() cil managed
{
    .maxstack 2
    .locals init (
        [0] int32 a,
        [1] int32 b,
        [2] int32 e,
        [3] int32 f)
    L_0000: ldc.i4.1 
    L_0001: stloc.0 
    L_0002: ldc.i4.2 
    L_0003: stloc.1 
    L_0004: ldloc.0 
    L_0005: ldloc.1 
    L_0006: sub 
    L_0007: stloc.2 
    L_0008: ldc.i4.2 
    L_0009: ldloc.1 
    L_000a: add 
    L_000b: stloc.3 
    L_000c: ldloc.2 
    L_000d: ldc.i4.1 
    L_000e: add 
    L_000f: stloc.2 
    L_0010: ldloc.2 
    L_0011: ldloc.3 
    L_0012: mul 
    L_0013: stloc.2 
    L_0014: ldloc.2 
    L_0015: ldc.i4.s 10
    L_0017: mul 
    L_0018: stloc.3 
    L_0019: ldloc.2 
    L_001a: ldloc.3 
    L_001b: ble.s L_001f
    L_001d: ldloc.2 
    L_001e: ret 
    L_001f: ldloc.3 
    L_0020: ret 
}
 

Вкладення

  • epic_fail_3.png
    epic_fail_3.png
    51 КБ · Перегляди: 151
Приаттачил

VS2005



Для примера, вот так работает компиллятор C++ от Microsoft:
Код:
   151: 
   152: int f()
   153: {
   154:     int a = 1;
   155:     int b = 2;
   156: 
   157:     int e = a - b;
   158:     int f = 2 + b;
   159:     ++e;
   160:     e *= f;
   161:     f = e * 10;
   162: 
   163:     if (e > f)
   164:     {
   165:         return e;
   166:     }
   167:     else
   168:     {
   169:         return f;
   170:     }
   171: }
   172: 
   173: void CttttttttDlg::OnBnClickedOk()
   174: {
   175: 	MessageBox(_T(""));
00401450  push        0    
00401452  push        0    
00401454  push        offset string L"" (403880h) 
00401459  call        CWnd::MessageBoxW (40161Ah) 
   176: 	int i = f();  
   177: }
0040145E  ret

То, на что Delphi потребовалось полтора десятка инструкций, на C++ заняло целых 0 инструкций :іржач:
 
Останнє редагування:
Сделай (и приаттачь), пожалуйста, не

Код:
    private void button1_Click(object sender, EventArgs e)
    {
      MessageBox.Show("");
      this.f();
    }

а

Код:
    private void button1_Click(object sender, EventArgs e)
    {
      MessageBox.Show("");
      MessageBox.Show(this.f().ToString());
    }
 
пытаться стать специалистом в ЯП который мало где используется на Западе (а именно зарубежные заказчики всех кормят), просто неразумно. Пусть тот же C# будет стократ хуже, но заказчик сказал C#, значит C#.

+100500 :клас: даже добавить нечего

Вернее, добавлю только одно - оптимизация на уровне тактов процессора и ассемблерных инструкций в большинстве коммерческих / корпоративных приложений нахер никому не упала. Это на форуме круто пиписьками мериться, а в реальности клиент выберет тот язык и средства разработки, которые :

а) позволят дешевле и быстрее создать и поддерживать продукт
б) обеспечены поддержкой крупных производителей и развитым сообществом разработчиков

Так вот, что касается Delphi, если по критерию а) он еще более-менее проходит, да и то только для desktop приложений (а будущее за Web), то по критерию б) ИМХО и будущее Embarcadero весьма туманно, и вымирающие остатки сообщества дельфистов если где и остались, так это только у нас в СНГ.
 
компилятор паскаля с рождения выпиливает неиспользуемые функции,
если Вы об этом.
На скриншоте, который выложил AS0kol, ничего Delphi не выпилил.
Выпиливает он, скорее всего, только те функции, которые вообще не вызываются.

Сделай (и приаттачь), пожалуйста, не
Выложу вечером. Только зачем? Код функции будет точно таким же, как и при вызове "i=f()".

что еще за фокусы с переодеванием?
Скорее с непониманием.

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

Так вот, что касается Delphi, если по критерию а) он еще более-менее проходит, да и то только для desktop приложений (а будущее за Web), то по критерию
Я о том же. Подходит, но с натяжкой. В то же время, есть С/C++/C#, каждый из которых подходит для определенного круга задач значительно лучше, чем Delphi.

Как и обещал:
 
Останнє редагування:
Назад
Зверху Знизу