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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пост превосходства современных ЯП, над олдскульными 
:(
    Опции темы
Lazin
Дата 14.12.2009, 11:52 (ссылка) |    (голосов:10) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



Я считаю, что такие языки программирования, как C++ и Delphi - свое отживают, причина их широкого использования - инерция и большое количество унаследованного кода. Конечно, для системных приложений можно и нужно использовать что-то близкое к железу. Но вот для большинства задач это overkill, сейчас никто не пишет GUI приложения на asm-е, а ведь раньше писали. Ну вот лет через 5, никто не будет писать GUI приложения на таких ЯП, как Си, С++, Delphi. Вместо этого, будущие mainstream приложения будут компилироваться в байт-код какой-нибудь VM. Вот так-то! smile 
заметьте, я не говорю о таких областях как численные методы, системный софт и тд, тоесть о тех областях, где нужен минимальный memory footprint, либо очень высокая производительность
Но в ответ на это, я всегда слышу одно и то-же, мол все будет тормозить, а С++ это "крута", "патамушта" работает быстро. Хахаха!!! smile
BITCHES DON'T KNOW BOUT MY OPTIMIZATION SKILLS
Конечно, компилятор С++ создает более эффективный, нативный код, но тут есть один момент - средний программист просто не умеет писать эффективный код, не понимает как работает железо и тд. Что-бы начать писать приличный плюсовый код, нужно два-три года практики. Что-бы понимать как ваш код работает, нужно намного больше чем просто знание языка. Далеко не все читали What Every Programmer Should Know About Memory. Иногда складывается впечатление, что многие разработчики вообще живут в начале 90х годов и пишут программы, которые должны работать на Pentium PRO с 64х RAM. Я вообще считаю, что делать какие-либо предположения о скорости работы того или иного участка кода до его запуска под профайлером - гадание на кофейной гуще. smile 
С другой стороны, современные ВМ не требуют от разработчика понимания того, как работает железо, позволяя при этом создавать приложения, имеющие приличную производительность. Код на таких языках как java, c#, scala, etc, намного проще, следовательно в нем проще разобраться, следовательно, в нем проще найти узкие места и оптимизировать.

В общем, я предлагаю такой challenge - выбираем задачу, но только не синтетическую, а достаточно близкую к жизни, вы пишете реализацию на своем "быстром" %favorite language%, а потом я пишу то-же самое на "тормзном" C# или Java, или еще чем-нибудь. Моя реализация отстает по скорости не более чем на 25%, а скорее всего рвет вашу как тузик тряпку xD. Ну и естественно, приложение должно полностью утилизировать современные многоядерные процессоры, а куда без этого?

итак, кто в деле? smile
PM MAIL Skype GTalk   Вверх
MAKCim
Дата 14.12.2009, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Lazin
+1
идеальный вариант - С + что-то высокоуровневое типа Python



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

PM MAIL   Вверх
Cheloveck
Дата 14.12.2009, 13:30 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Я подпишусь на тему, но придерживаюсь мнения Lazinа. Страуструп писал ещё, что высокоуровневые части приложений должны буть написаны на языках высокого уровня, хотя, в момент сборки, могут генерировать код на C++ или C (что нам демонстрирует Qt).


--------------------
user posted image
PM Jabber   Вверх
Vasay
Дата 14.12.2009, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Lazin,  


Считаю, что серьезным минусом компилируемых в прцессорный код ЯП является их зависимость от конкретного набора инструкций. Что сильно тормозит развитие процессорной индустрии (облом с переходом на IA64, куча костылей для поддержки х86 в AMD64).

Будущее за платформами типа .net и Java.

А на счет скорости, слышал про такие вещи (не знаю насколько правда - не проверял  smile  ):

Реализация интерпретатора Ruby  реализованная на Java ( JRuby ) быстрее родного интерпретатора на Си.
Интерпретатор php реализованный на Java в 4 раза быстрее mod_php (по заверениям производителей  smile http://caucho.com/resin/doc/quercus.xtp )
 


Это сообщение отредактировал(а) Vasay - 14.12.2009, 13:44


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Lazin
Дата 14.12.2009, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



Vasay, лично для меня важнее даже не это, а модульность, настоящая, а не на уровне языка. К примеру, в компилируемой в нативный код программе можно использовать различные библиотеки, компоненты, каждый из которых может испортить стек или кучу. При этом упадет все приложение и не всегда бывает понятно, что и где сломалось на самом деле. Другая сторона медали - ты пишешь библиотеку, которая используется многими клиентами. И в один "прекрасный" момент получаешь crash dump приложения, с ошибкой доступа внутри твоего кода, который просто не может поломаться. И после нескольких часов/дней отладки и многих попыток воспроизвести ситуацию, оказывается что приложение просто портило память, используемую твоей библиотекой.

Цитата(MAKCim @  14.12.2009,  13:19 Найти цитируемый пост)
+1


Цитата(Cheloveck @  14.12.2009,  13:30 Найти цитируемый пост)
Я подпишусь на тему, но придерживаюсь мнения Lazinа. Страуструп писал ещё, что высокоуровневые части приложений должны буть написаны на языках высокого уровня, хотя, в момент сборки, могут генерировать код на C++ или C (что нам демонстрирует Qt). 


ну так совсем не интересно, а где-же оппоненты? с кем холиварить????
PM MAIL Skype GTalk   Вверх
UniBomb
Дата 14.12.2009, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



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

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



Цитата(Lazin @  14.12.2009,  14:58 Найти цитируемый пост)
ну так совсем не интересно, а где-же оппоненты? с кем холиварить????

С моей невысокой колокольни вообще не видно предмета спора  smile  Демагогия о доминировании одного языка над другим присущ в основном делфятникам  smile  Если честно, то серьёзных споров о том, "что лучше" я уже давно не видел. С другой стороны встаёт немного другой вопрос - "зачем мне ява, если те же задачи я могу решить на С++?". Есть ещё и третья - "компилируемые языки скоро вымрут, бугага!". С этим тоже не стоит спорить, ибо если и вымрут, то не во всех областях:

Цитата(Lazin @  14.12.2009,  12:52 Найти цитируемый пост)
таких областях как численные методы, системный софт и тд, тоесть о тех областях, где нужен минимальный memory footprint, либо очень высокая производительность


В общем кто как хочет, тот сами знаете что  smile 


--------------------
PM MAIL ICQ Skype   Вверх
kemiisto
  Дата 14.12.2009, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



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

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



Цитата(Lazin @  14.12.2009,  12:52 Найти цитируемый пост)
Вместо этого, будущие mainstream приложения будут компилироваться в байт-код какой-нибудь VM.

LLVM? Что ТС думает по этому поводу? 

Цитата(MAKCim @  14.12.2009,  14:19 Найти цитируемый пост)
идеальный вариант - С + что-то высокоуровневое типа Python

Не, не. Низкоуровневый язык - всё что угодно, только не С (в мечтах Oberon, в суровой реальности тот же Go подойдёт). Выше - всё, что угодно только не Python. smile Шлак.

Цитата(Lazin @  14.12.2009,  14:58 Найти цитируемый пост)
Vasay, лично для меня важнее даже не это, а модульность, настоящая, а не на уровне языка.

И где ты эту модульность увидел? smile 

Цитата(Cheloveck @  14.12.2009,  14:30 Найти цитируемый пост)
Страуструп писал

Ага, ещё Сталин писал...

Цитата(Cheloveck @  14.12.2009,  14:30 Найти цитируемый пост)
что нам демонстрирует Qt

В каком месте? smile 

А вообще, да, как перейдём на новый движок, надо всеми силами плюсистов отдельно оставить на старом. smile 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
djamshud
Дата 14.12.2009, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


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

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



По-моему Lazin сегодня исполняет обязанности Капитана. А с Капитаном не поспоришь:).

Все в большей мере зависит от мастерства программиста, а не от того, на чем он пишет. И на асме нынче почти не пишут не только из-за его раздутости и платформозависимости, но и потому, что написать ассемблерый код оптимальнее того, что выдает компилятор (естественно с оптимизациями: аппаратными и логическими), под силу далеко не каждому.

>Не, не. Низкоуровневый язык - всё что угодно, только не С (в мечтах Oberon, в суровой реальности тот же Go подойдёт).

C не нравится в качестве низкоуровнего? Go низкоуровневый? Черт, куда же катится этот мир.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Cheloveck
Дата 14.12.2009, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(kemiisto @  14.12.2009,  22:05 Найти цитируемый пост)
В каком месте? smile 

Код

<ui version="4.0" >
 <author></author>
 <comment></comment>
 <exportmacro></exportmacro>
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow" >
  <property name="geometry" >
   <rect>
    <x>0</x>
    <y>0</y>
    <width>800</width>
    <height>600</height>
   </rect>
  </property>
  <property name="windowTitle" >
   <string>MainWindow</string>
  </property>
  <widget class="QMenuBar" name="menubar" />
  <widget class="QWidget" name="centralwidget" />
  <widget class="QStatusBar" name="statusbar" />
 </widget>
 <pixmapfunction></pixmapfunction>
 <connections/>
</ui>

В этом, например


--------------------
user posted image
PM Jabber   Вверх
A5uKa
Дата 14.12.2009, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

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



Код

#include <iostream>
using std::cout;
int main()
{
long res = 0;
for (int x = 0; x < 20000; x++)
    {
        for (int y = 0; y < 200000; y++) res += (y + x);
    }
 cout << res;
 return 0;
}

у меня спортивный интерес 

п.с. 
Цитата

достаточно близкую к жизни

трудно ... может потом придумаю  smile 

Думаю, что раньше люди спорили о месте на жёстком диске, теперь о каких-то долях секунд (http://www.csharphelp.com/archives2/archive458.html) лучше бы думать о возможностях писать "лёгкий" код, ведь я на 100% знаю, что мой нормальный проект в 6000 строк в главном файле может работать быстрее. Создать проект, который будет тормозить на среднестатистическом компьютере не так просто сейчас, если конечно не делать вон тот код сверху тысячу раз.

Это сообщение отредактировал(а) A5uKa - 14.12.2009, 22:29
PM   Вверх
Lazin
Дата 14.12.2009, 22:34 (ссылка) |  (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



Цитата(kemiisto @  14.12.2009,  21:05 Найти цитируемый пост)
И где ты эту модульность увидел? 

в моем понимании, модульность невозможна в том, случае, если разные компонетны/модули могут в сумме давать неработающую программу

Цитата(kemiisto @  14.12.2009,  21:05 Найти цитируемый пост)
LLVM?

LLVM

Цитата(kemiisto @  14.12.2009,  21:05 Найти цитируемый пост)
в мечтах Oberon, в суровой реальности тот же Go подойдёт

все что угодно, только не Oberon smile

Цитата(djamshud @  14.12.2009,  21:32 Найти цитируемый пост)
По-моему Lazin сегодня исполняет обязанности Капитана. А с Капитаном не поспоришьsmile.
это был крик души smile
PM MAIL Skype GTalk   Вверх
Oxy
Дата 15.12.2009, 00:09 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 70
Регистрация: 20.9.2009

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



Цитата(A5uKa @  14.12.2009,  22:17 Найти цитируемый пост)

Код

#include <iostream>
using std::cout;
int main()
{
long res = 0;
for (int x = 0; x < 20000; x++)
    {
        for (int y = 0; y < 200000; y++) res += (y + x);
    }
 cout << res;
 return 0;
}


у меня спортивный интерес 


Код

using System;
using System.Text;

namespace Exemple
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(439996000000000);
        }
    }
}



Цитата(Lazin @  14.12.2009,  11:52 Найти цитируемый пост)
а скорее всего рвет вашу как тузик тряпку xD

 smile 


Это сообщение отредактировал(а) Oxy - 15.12.2009, 00:10
PM MAIL WWW   Вверх
kemiisto
Дата 15.12.2009, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



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

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



 smile 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
A5uKa
Дата 15.12.2009, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

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



Цитата(Oxy @ 15.12.2009,  00:09)
namespace Exemple

всё же число ты как-то узнал.
Думаю время на это затратил не меньше.
А код можно было вообще не писать.
PM   Вверх
Oxy
Дата 15.12.2009, 00:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 70
Регистрация: 20.9.2009

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



Цитата(A5uKa @  15.12.2009,  00:38 Найти цитируемый пост)

всё же число ты как-то узнал.
Думаю время на это затратил не меньше.

мы же не пишем программы чтобы запускать их один раз smile 

если на коком-то языке можно написать достаточно быстрые программы, это ещё ничего не означает smile 

Это сообщение отредактировал(а) Oxy - 15.12.2009, 00:51
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




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


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

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