Re[8]: С++ и .NET
От: _FRED_ Черногория
Дата: 15.10.04 12:28
Оценка:
Здравствуйте, maq, Вы писали:
VD>>Следующая версия эксплорера пришется в большей части с использованием дотнета. И будет огромный менеджед-апи для расширения функциональности эксплорера на дотнете.
maq>Откуда информация? И на чем она пишется? C++/CLI?

Например отсюда
Help will always be given at Hogwarts to those who ask for it.
Re[8]: С++ и .NET
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.10.04 12:51
Оценка:
Здравствуйте, maq, Вы писали:

VD>>Следующая версия эксплорера пришется в большей части с использованием дотнета. И будет огромный менеджед-апи для расширения функциональности эксплорера на дотнете.


maq>Откуда информация?


От Рефлектора.

maq>И на чем она пишется? C++/CLI?


Похоже что в основном на Шарпе. Но есть интеропные проекты и на МС++. Их сразу выдает куча назной грязи в метаинформации.
... << RSDN@Home 1.1.4 beta 3 rev. 196>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: С++ и .NET
От: Astaroth Россия  
Дата: 19.10.04 19:32
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Ну, как новичку я бы точно советовал начать с Шарпа. С++ тоже полезен, но лучше не извращать чувство прекрасного "с молодости". Шарп концептуально намного более чист. И для восприятия он очень хорош.


Ну, лично я очень благодарен тому преподу, который на первом курсе не забивал головы всякой объектной и визуальной чепухой, а рассказал, как залогиниться, запустить joe, mc и gcc и строго-настрого запретил раньше второго курса создавать файлы с расширением .cpp (а не .c).
WinAmp играет: (умолк пока)
http://livejournal.com/users/breqwas
Re[4]: С++ и .NET
От: Alex Reyst Россия  
Дата: 20.10.04 06:02
Оценка:
Здравствуйте, Astaroth, Вы писали:

A>Ну, лично я очень благодарен тому преподу, который ... запретил раньше второго курса создавать файлы с расширением .cpp (а не .c).


Вот и выходят от такого преподавателя студенты, которые рассматривают C++ как "расширение C", и пишут на C++ как на C.
(Не лично к вам, а вообще)
Все, что здесь сказано, может и будет использоваться против меня...
Re[5]: С++ и .NET
От: Alexey Chen Чили  
Дата: 20.10.04 09:02
Оценка:
Здравствуйте, Alex Reyst, Вы писали:

AR>Вот и выходят от такого преподавателя студенты, которые рассматривают C++ как "расширение C", и пишут на C++ как на C.

AR>(Не лично к вам, а вообще)

Наверное, ты имел в виду, что они пишут на С с классами, а не на Modern C++. На C++, как на C писать вообще-то не получится
Дык и что плохого в C++, котрый С с классами и жесткой типизацией? Желательно аргументированно, без шапкозакидательства.
Re[5]: С++ и .NET
От: Astaroth Россия  
Дата: 20.10.04 13:41
Оценка:
Здравствуйте, Alex Reyst, Вы писали:

AR>Вот и выходят от такого преподавателя студенты, которые рассматривают C++ как "расширение C", и пишут на C++ как на C.


Э, нет. Лично я по достоинству оценил классы, множественное наследование, шаблоны, stl. Но сомневаюсь, что я смог бы это сделать, не пообщавшись с функциями и указателями. ИМХО объектный подход — не настолько простая и очевидная концепция, чтобы вот так сразу её понять...
WinAmp играет: (умолк пока)
http://livejournal.com/users/breqwas
Re[6]: С++ и .NET
От: Astaroth Россия  
Дата: 20.10.04 13:41
Оценка:
Здравствуйте, Alexey Chen, Вы писали:

AC>Наверное, ты имел в виду, что они пишут на С с классами, а не на Modern C++. На C++, как на C писать вообще-то не получится


Запросто

AC>Дык и что плохого в C++, котрый С с классами и жесткой типизацией? Желательно аргументированно, без шапкозакидательства.


Ну как сказать...
Лично мне часто приходится ковыряться в движке PBEM-игрушки Atlantis. Вот она написана именно на таком "С с классами". Указатели вместо ссылок, макросы препроцессора вместо шаблонов, самопальные контейнеры вместо STL. Все классы унаследованы либо от AList, либо от AListElem. Прокрутка списка выглядит так:

forlist(&u->items)
{
    Item * i = (Item *) elem;
    // колдуем над этим i
}


Ну и куча подобных "красивостей" в том же духе.
Вроде игрушка обычно работает, но ощущения от всего этого несильно приятные...
WinAmp играет: (умолк пока)
http://livejournal.com/users/breqwas
Re[7]: С++ и .NET
От: Alexey Chen Чили  
Дата: 20.10.04 13:51
Оценка:
Здравствуйте, Astaroth, Вы писали:

AC>>Наверное, ты имел в виду, что они пишут на С с классами, а не на Modern C++. На C++, как на C писать вообще-то не получится

A>Запросто
Это всего лишь значит что на С ты не писал, а только на C++ типа как на С. У этого языка свои приемы и свои акробатические этюды которые на нормальном C++ не пройдут.

AC>>Дык и что плохого в C++, котрый С с классами и жесткой типизацией? Желательно аргументированно, без шапкозакидательства.

A>...
A>Ну и куча подобных "красивостей" в том же духе.
Интересно если я тебе привиду куок плохого кода с кучей шаблонов и использованием буста, и скажу что так писать плохо, потому что.... это будет аргументом?
Re[8]: С++ и .NET
От: Astaroth Россия  
Дата: 20.10.04 14:08
Оценка:
Здравствуйте, Alexey Chen, Вы писали:

AC>Здравствуйте, Astaroth, Вы писали:


A>>Запросто

AC>Это всего лишь значит что на С ты не писал, а только на C++ типа как на С. У этого языка свои приемы и свои акробатические этюды которые на нормальном C++ не пройдут.

Это всего лишь значит, что я могу писать практически не отличающийся от pure C код и компилировать его компилятором С++, не более

AC>Интересно если я тебе привиду куок плохого кода с кучей шаблонов и использованием буста, и скажу что так писать плохо, потому что.... это будет аргументом?


Аргументом в пользу чего?
Я просто столкнулся с программой, которая начала писаться очень давно людьми, которые, видимо, не успели привыкнуть к С++. И мне кажется, что причина многих проблем Атлантиса — в том числе этой дурной наследственности.
А делать из этого какие-то обобщающие выводы — боже упаси
WinAmp играет: (умолк пока)
http://livejournal.com/users/breqwas
Re[6]: С++ и .NET
От: Alex Reyst Россия  
Дата: 21.10.04 07:35
Оценка:
Здравствуйте, Alexey Chen, Вы писали:

AC>Наверное, ты имел в виду, что они пишут на С с классами, а не на Modern C++.


Нет. Я второпях действительно невнятно выразился, но думал, что в контексте ветки меня будет понятно. Хорошо программировать можно на чем угодно, также как можно красиво исполнять Паганини на гиджаке. Но ведь в наших музыкальных школах почему-то начинают обучать играть на гораздо более "молодых" наследниках этого музыкального инструмента — скрипке, например.
Речь шла именно о том, с чего начинать обучение
Автор: VladD2
Дата: 10.10.04
. Я уже высказывался некогда на эту тему (здесь
Автор: Reyst
Дата: 05.05.04
, здесь
Автор: Alex Reyst
Дата: 07.05.04
— прошу прочитать, чтобы было понятно далее): подход, о котором говорит Astaroth
Автор: Astaroth
Дата: 19.10.04
, — подход, чаще всего принимаемый в наших вузах — просто провоцирует "штамповку" весьма посредственных программистов. Естественно, все зависит и от преподавателя, и от студента — но выбор методики оказывает значительное влияние на качество обучения.
В данном случае проблема вызвана тем, что практически "первый" язык дают в полном отрыве от каких-либо базовых концепций, только как средство, необходимое для дальнейшего обучения программированию. Для меня это "обоснование" выглядит глупо: это все равно, что при обучении биологии заставлять тупо зубрить латинскую номенклатуру и биологические термины с их краткими определениями, а лишь потом из этой каши выстраивать систему. Результатом именно такой последовательности являются: трудности при изучении более абстрактных тем; излишняя привязка концепций программирования к свойствам конкретного языка, путаница в голове между концепцией и ее конкретной реализацией в некотором языке; и соответственно сильно искаженное их понимание (посмотри, сколько на сайте высказываний на темы типа "шаблоны C++ как высшее достижение ООП" и т.п.). На первой стадии обучения еще можно подумать о Паскале и т.п. (хотя возражения против Паскаля ниже), но именно язык C, как достаточно сильно отражающий особенности аппаратной части компьютеров (если вспомнить, даже вполне конкретной архитектуры), в этой стадии процесса обучения — вершина маразма.
Поэтому, если уж НЕОБХОДИМО давать некоторый РЕАЛЬНЫЙ язык ДО изучения теоретических основ — то это должен быть язык а) который достаточно абстрактен, не заставляет задумываться над мелкими деталями; оторван от аппаратуры (C отдыхает); б) который позволит в дальнейшем "красиво" использовать его для демонстрации как можно большего числа тем (Паскаль отдыхает); в) широко используется на практике.
Для меня в настоящее время таким языком является C++, а точнее именно то его "подмножество", которое можно назвать "Modern C++".

P.S. Еще одним аргументом в пользу преподавания сначала C, а затем C++ мне приводили т.н. "исторический подход". Еще одна вершина маразма: попробуйте учить английскому языку, начиная с древнеанглийского.
P.P.S. Под написанием программ "на С++ как на С" я имел ввиду часто встречающиеся шедевры "смешения стилей", типа такого (сильно преувеличено, но думаю, смысл понятен):
s1 = AnsiString1.c_str();
s2 = AnsiString2.c_str();
strcat(s1, s2);
Form1->Control1->Text = AnsiString(s1);
Все, что здесь сказано, может и будет использоваться против меня...
Re[7]: С++ и .NET
От: Alexey Chen Чили  
Дата: 21.10.04 09:25
Оценка:
Здравствуйте, Alex Reyst, Вы писали:

AC>>Наверное, ты имел в виду, что они пишут на С с классами, а не на Modern C++.

AR>Нет. Я второпях действительно невнятно выразился, но думал, что в контексте ветки меня будет понятно. Хорошо программировать

Почитал ссылки. В общем согласен, но вернемся к нашим баранам, тобишь к C и C++. Только я буду говорить о программистах, а не о подготовке лидов и архитекторов. Это следующая ступень и не каждому это нужно.

AR>Поэтому, если уж НЕОБХОДИМО давать некоторый РЕАЛЬНЫЙ язык ДО изучения теоретических основ — то это должен быть язык а) который достаточно абстрактен, не заставляет задумываться над мелкими деталями; оторван от аппаратуры (C отдыхает); б)который позволит в дальнейшем "красиво" использовать его для демонстрации как можно большего числа тем (Паскаль отдыхает); в) широко используется на практике.


Теперь я опять буду говорить о багах. Что-то я последнее время в энтомолога переквалифицировался
Фича C, для обучения программированию, в том, что человек на практике учится ловить баги в срем коде. Программист который не может этого сделать — это не программист, это писатель, про заек. С очень быстро приводит людей к таким понятиям как ликхантер и мемчекер. Наглядно демонстрирует последствия мемориденса. Учит отлавоиать ошибки второго рода. Вся фича в том что не умея этого делать будь ты хоть трижды оо-гуру и четырежды мастером алгоритмики, сложную прогу ты не напишешь, ну разве что очень повезет. Очень часто люди пишушие про крутость и надежность всяких интересных С++ конструкций, просто проскипали все это и плохо понимают к чему в результате приводят их художества.

С, в отличии от C++, не загромождает этот процесс сложными конструкциями, практически напрямую отображая код в команды проца, упрощая тем процесс. И не важно какой процессор, человек научившийся понимать во что будет преобразован его код, сможет сэкстраполировать результат и на другой платформе.

Вопрос к тебе как владельцу коноры. Тебе нужны программисты практики или гуру теоретики, которые жутко классно могут обсуждать красоту паттернов и идеи modern технологий? Я на собеседовании первым делом проверяю может ли человек найти ошибку в своем коде, знает ли он язык и платформу, а уже потом умеет ли он абстракции рисовать.

AR>P.P.S. Под написанием программ "на С++ как на С" я имел ввиду часто встречающиеся шедевры "смешения стилей", типа такого (сильно преувеличено, но думаю, смысл понятен):


Нет, не понятен. Абсолютно бессмысленная, и мало того, ошибочная конструкция.
Более реальный пример приведи, а то теорий на эту тему я уже много слышал, а вот реальных примеров ещё не видел.
Re[8]: С++ и .NET
От: Alex Reyst Россия  
Дата: 21.10.04 10:34
Оценка:
AC>Только я буду говорить о программистах, а не о подготовке лидов и архитекторов.

Я про это и не заикался.

AC>Фича C, для обучения программированию, в том, что человек на практике учится ловить баги в срем коде.


В среднем коде? Или в своем коде? Или я вас неправильно понял?
Извините, это обучение по принципу монгольских пионеров: "мы успешно преодолеем трудности, которые сами себе и создали".

Imho, надо сначала научиться писать код хоть как-нибудь, а уже потом искать ошибки в коде.
Извините, опять приведу аналогию с обучением языку естественному: при недостатке знаний лучше пытаться говорить хоть как нибудь — это вполне естественный этап, через который прошел каждый человек, пытаясь научиться говорить.

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

AC>С, в отличии от C++, не загромождает этот процесс сложными конструкциями, практически напрямую отображая код в команды проца, упрощая тем процесс.

-1. Вас волнует, какими "командами проца" выполняется изменение размеров окна на экране, или какими байтами представлена информация о состоянии пациента в реанимационном отделении?
-1. А что будет, если сменится "проц"?

AC>Вопрос к тебе как владельцу коноры. Тебе нужны программисты практики или гуру теоретики, которые жутко классно могут обсуждать красоту паттернов и идеи modern технологий? Я на собеседовании первым делом проверяю может ли человек найти ошибку в своем коде, знает ли он язык и платформу, а уже потом умеет ли он абстракции рисовать.

Увы-увы, должен признаться, что я уже не "владелец конторы". Мой прежний источник заказов "коллапсировал", а я не являлся (и не являюсь) настолько "продвинутым" в условиях нашего рынка, чтобы после этого выжить. Сейчас я обыкновенный безработный .
Но не суть. Применительно к обсуждаемому вопросу: да, мне нафиг не нужны были люди, которые умели бы ТОЛЬКО обсуждать "красоту". Нужны были "реализаторы". НО: я успел почуствовать вполне ощутимую корелляцию между качеством работы "среднего кодера" и той методикой, по которой он учился.

AC>Более реальный пример приведи, а то теорий на эту тему я уже много слышал, а вот реальных примеров ещё не видел.

Это был реальный пример, на днях появлявшийся в форуме. Его отмодерировали, посему сейчас не нашел и писал "от балды".
Все, что здесь сказано, может и будет использоваться против меня...
Re[9]: С++ и .NET
От: Alexey Chen Чили  
Дата: 21.10.04 11:57
Оценка:
Здравствуйте, Alex Reyst, Вы писали:

AC>>Фича C, для обучения программированию, в том, что человек на практике учится ловить баги в срем коде.

AR>В среднем коде? Или в своем коде? Или я вас неправильно понял?
Сорри, в своём, как минимум. Многие и в своем-то коде не могут найти, что уж говорить про чужой

AR>Извините, это обучение по принципу монгольских пионеров: "мы успешно преодолеем трудности, которые сами себе и создали".

А если посмотреть на это, как на обучение не создавать себе проблем?

AR>Imho, надо сначала научиться писать код хоть как-нибудь, а уже потом искать ошибки в коде.

Чем же C, плох для обучения просто программированию? Типа там пузырьком посортировать.

AR>-1. Вас волнует, какими "командами проца" выполняется изменение размеров окна на экране, или какими байтами представлена информация о состоянии пациента в реанимационном отделении?


Меня интересует, например, какими командами делается постпроцессинг изображения которое я должен выводить с фиксированным жестко заданным фпс, или какими командами делается шифрование толстого потока данных, который я должен гнать с немалой скоростью и полиморфного кода в системе защиты который должен постоянно менятся в процессе жизни программы. А еще бывает интересно какими командами происходит работа с данными в многопоточном приложении на многопроцессорном агрегате, как и зачем там есть(нет) синхра(ы), и меня интересует, как я потом буду в написаном коде ошибки искать, после релиза. Только не надо говорить что их не бывает.

Или мы говорим про подготовку девочек из пединститута, которые программирование в школах вести будут. Дык им да, им это не нужно. Им нужен абстрактный язык, максимально отвязанный от платформы.

А изменять размеры окошка надо на VB, C# или Delphi, и таких 'программеров' надо учить не алгоритмы писать а окошки размещать на экране правильно. Или там в DB Wizard'е таблички рисовать.

AC>>Более реальный пример приведи, а то теорий на эту тему я уже много слышал, а вот реальных примеров ещё не видел.

AR>Это был реальный пример, на днях появлявшийся в форуме. Его отмодерировали, посему сейчас не нашел и писал "от балды".
Этот 'реальный пример', если повезет, просто упадет по AV, если не повезет — будешь ловить последствия по всей программе. При чем тут 'смешивание стилей'?
Re[10]: С++ и .NET
От: Alex Reyst Россия  
Дата: 21.10.04 19:14
Оценка:
Позволю себе резюмировать: по поводу того, как надо обучать, мы "исповедуем религии", противоположные друг другу.
Я придерживаюсь мнения, что изучив "на пальцах", не вдаваясь в детали реализации некоторые основы, легче потом вдаваться в конкретику на тему "какими командами сжимается поток данных". Повторюсь — я считаю эти знания необходимыми, но уверен, что не с этого надо начинать программировать.
Вы же считаете, что студента сразу нужно "тыкать носом" в суровую правду жизни.
Боюсь, что достоверных статистических аргументов как в мою, так и в вашу пользу найти будет нельзя, все основывается исключительно на личном опыте — и видно, что он у нас совершенно разный .

За недостатком объективных доказательств своей точки зрения заканчиваю...
Все, что здесь сказано, может и будет использоваться против меня...
Re[19]: С++ и .NET
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.10.04 18:04
Оценка:
Здравствуйте, FR, Вы писали:

FR>В общем питон парсит в 100 раз быстрее,


Естественно. Ведь C# не парсит, а компилирует. Причем долболомы из МС ненашли ничего умнее чем сделать АПИ динамической компиляции в виде обретки над компилятором командной строки. Так что при каждом "парсинге" поднимается отдельная копия компилятора который порождает сборку. Ну, а окончательная компиляция (джит) вообще происходит при первом проходе исполнения.

FR> но C# выполняет в 10 раз быстрее, а C++ отстает от обоих.


Собственно о этих цифрах я тебе и гворил. Минимум десятичный порядок разницы. Это классика для компилятор vs. интерпретатор. Более того это говорит, о том что интерпритатор написан довольно качественно. Однако чем сложенее будет задача, тем бльше будет разрыв. Так что в критических ко времени задачах Питон непригоден. А скриптам для игр (о чем мы с тобой как-то говорили), согласись, очень не помешал бы этот порядок. Конечно если создать энтилектуальный компилятор, то может из Питона и можно выжать по более, но вряд ли сильно. Тут уже будут играть свою роль нетипизированность языка. Ведь любой элемент списка может на ходу сменить тип хранимых в нем данных. А это уже никак не оптимизируешь.
... << RSDN@Home 1.1.4 beta 3 rev. 206>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[18]: С++ и .NET
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.10.04 18:04
Оценка:
Здравствуйте, FR, Вы писали:

FR>а с чем именно


Много с чем. Начиная от Gupta SQLWindows (была такая забавная хрень) и доморощенных интерпретаторов и заканчивая разнымии JScript/VBScript в ASP 1.0.

FR>не знаю мне чтобы научится нормально программровать хватило книги на русском, и нескольких статей, вообще язык простой и легкий.


Согласен, книга хорошая. Если программировать уже умешь, то читается влет. Можно сказать теперь и я немного знаю Питон.

FR>да полно у питона библиотек.


И? Ну, и все же фрэймворковские библиотеки по более будут. А учитывая прозрачную интеграцию с анменеджед-миром...

FR>Ладно как я посмотрю какую нибудь приличную игру на шарпе так и будем спорить(или не будем )


Ссылки в дтотнете и философии давали много раз. Скачай, посмотри.

FR>Не всегда хотят продать, бывает и религиозная пропаганда


Дык религиозная пропаганда — это совсем другое дело.
Ну, да из мен фиговый миссионер. Я мигом сменю веру если увижу что-то действительно более стоящее.

FR>Это понятно что скорость компиляции больше, на том же дельфи на самом деле быстрее отлаживатся чем на плюсах, но это не увеличивает скорость разработки в разы, может процентов на 10, хотя конечно зависит от того как привык работать.


Да скорость компиляции дело десятое. Конечно приятно, что можно как в Васике F5 и тама, но не в этом дело. Отлака меньше. На шарпе вылетов практически не бывает. Переменные все как одна инициализированы. Проходов по памяти нет. 100%-ый контроль всего что можно (выходы за пределы массива, инициализированность переменных и т.п.). Строгая типизация. Причем как статическая (еменьшает количество рантайм-ошибок), так и динамическая (нер проблем плюсов с неверными приведениями). Плюс куча конструкций языка уменьшающих объем кода (так самая высокоуровневость о которой ты говорил). Плюс огромная библиотека. Не нужно неделями выискивать код работы с jpeg-ами и т.п. все есть, все под рукой, все очень леко ищется. Ну, и в конце концов мощьная среда. Студия 2003 + РеШарпер или студия 2005 — это очень мощная среда ориентированная на супер скоросное кодирование (именно кодирование, хотя конечно есть и разные редакторы форм как в Дельфи). Все это в купе дает нехилый кумулятивный эффект. А в итоге ты имешь возможность получить исполнимый код сравнимый по скороти с созданным на лучших С++-компиляторами. Не все конечно гладно. Но все же.

FR>Я говорю про объем портированного движка.


Незнаю, не смотрел. Но думаю движок портировали не чтобы доказать что на шарпе он будет меньше. А чтобы упростить рзработку конечных игр. Иначе зачем по-твоему это нужно был? Ну, а то что объем никоуровневого кода сопоставим, так это и не странно. Это же основаная ниша С++. Иначе плюсы давно нужно было на свалку отправить. Странно будет если конечная игра будет такая же развесистая и запутанная как на плюсах.

VD>>Вот как-то ни разу не видел. Какой из самплов у тебя тормозил?


FR>я про демки из шарповского варианта ogre.


Его я не смотрел. Слушал только тех кто в русских комьюнити им пользуется. Оценки были до 10% медленнее. Что по мне не существенно. Как-нибудь попробую скчать демки этого орга и погляжу.

VD>>Не думаю, что он сильно выше уровнем. Хотя судить не буду, все же я Питон совсем не знаю. Если ты продемонстриуешь эту высокоуровенвость, то буду очень признателен, а сам постараюсь сделать тоже самое на Шарпе, чтобы можно было сравнить.


FR>ну не знаю, мне проще наоборот, вот из твоей ссылки про калькулятор ...

FR>При этом ни пришлось писать загрузчик, все и так реализуется.

И где тут большая высокоуровневость? Просто есть доступ к интерпретатору. Что не странно. Большинство интерпретаторов это делают.

А конструкции пратически те же. Только работа с массивами и строками в Шарпе сделана в ОО-стиле, а в Питоне встроена. Причем на Шарпе я могу и свою сбацать, а у Питона скорость это не позволит, т.е. можно то оно можно, но больно дорого.

FR>Кстати у тебя там ошибка цикл начинается с нуля и выражение calc1.Calc(i, i); должно вылетать с исключением деление на ноль,


Не должен. Это вещественные числа и при вычислениях они не совсем 0.

FR>(и скорость вычисления похоже не верна так как вылетало на первой строке но ты не ловил), так что мне пришлось цикл с единицы начать.


Ничего там не вилетает. Иначе было бы исключение и просто ничего бы не выполнилось. Ну, да можешь поправить на еденицу и перемерить. Исходники то доступны.

FR>Ладно, но шарп приложения тоже подтормаживают как и ява.


Это миф пришедший с времен когда Ява была интерпретатором. Думаю, твои эксперементы с этим тестом должны были тебя убедить.

FR>Писал моды для игр? Для каких?


Занимался компонентным ПО.
... << RSDN@Home 1.1.4 beta 3 rev. 206>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[19]: С++ и .NET
От: FR  
Дата: 22.10.04 21:15
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, FR, Вы писали:


FR>>а с чем именно


VD>Много с чем. Начиная от Gupta SQLWindows (была такая забавная хрень) и доморощенных интерпретаторов и заканчивая разнымии JScript/VBScript в ASP 1.0.


из командной строки интерпретатора?

FR>>не знаю мне чтобы научится нормально программровать хватило книги на русском, и нескольких статей, вообще язык простой и легкий.


VD>Согласен, книга хорошая. Если программировать уже умешь, то читается влет. Можно сказать теперь и я немного знаю Питон.


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

FR>>да полно у питона библиотек.


VD>И? Ну, и все же фрэймворковские библиотеки по более будут. А учитывая прозрачную интеграцию с анменеджед-миром...


У питона тоже прозрачная интеграция с C/C++ а учитывая SWIG то вообще просто пишешь нужные расширения на плюсах, а все остальное делается автоматом.

FR>>Не всегда хотят продать, бывает и религиозная пропаганда


VD>Дык религиозная пропаганда — это совсем другое дело.

VD>Ну, да из мен фиговый миссионер. Я мигом сменю веру если увижу что-то действительно более стоящее.

Ну судя по абзацу ниже все-таки религиозная
Да и я похоже тоже этим начал страдать

FR>>Это понятно что скорость компиляции больше, на том же дельфи на самом деле быстрее отлаживатся чем на плюсах, но это не увеличивает скорость разработки в разы, может процентов на 10, хотя конечно зависит от того как привык работать.


VD>Да скорость компиляции дело десятое. Конечно приятно, что можно как в Васике F5 и тама, но не в этом дело. Отлака меньше. На шарпе вылетов практически не бывает. Переменные все как одна инициализированы. Проходов по памяти нет. 100%-ый контроль всего что можно (выходы за пределы массива, инициализированность переменных и т.п.). Строгая типизация. Причем как статическая (еменьшает количество рантайм-ошибок), так и динамическая (нер проблем плюсов с неверными приведениями). Плюс куча конструкций языка уменьшающих объем кода (так самая высокоуровневость о которой ты говорил). Плюс огромная библиотека. Не нужно неделями выискивать код работы с jpeg-ами и т.п. все есть, все под рукой, все очень леко ищется. Ну, и в конце концов мощьная среда. Студия 2003 + РеШарпер или студия 2005 — это очень мощная среда ориентированная на супер скоросное кодирование (именно кодирование, хотя конечно есть и разные редакторы форм как в Дельфи). Все это в купе дает нехилый кумулятивный эффект. А в итоге ты имешь возможность получить исполнимый код сравнимый по скороти с созданным на лучших С++-компиляторами. Не все конечно гладно. Но все же.


FR>>Я говорю про объем портированного движка.


VD>Незнаю, не смотрел. Но думаю движок портировали не чтобы доказать что на шарпе он будет меньше. А чтобы упростить рзработку конечных игр. Иначе зачем по-твоему это нужно был? Ну, а то что объем никоуровневого кода сопоставим, так это и не странно. Это же основаная ниша С++. Иначе плюсы давно нужно было на свалку отправить. Странно будет если конечная игра будет такая же развесистая и запутанная как на плюсах.


ну так я про что и говорил все время, классика ядро плюсы, верхний уровень скрипт.

FR>>ну не знаю, мне проще наоборот, вот из твоей ссылки про калькулятор ...

FR>>При этом ни пришлось писать загрузчик, все и так реализуется.

VD>И где тут большая высокоуровневость? Просто есть доступ к интерпретатору. Что не странно. Большинство интерпретаторов это делают.


так ты же все время говоришь что Шарп ускоряет работу, так Питон еще больше ускоряет для
этого конкретного примера, кода то намного меньше.

VD>А конструкции пратически те же. Только работа с массивами и строками в Шарпе сделана в ОО-стиле, а в Питоне встроена. Причем на Шарпе я могу и свою сбацать, а у Питона скорость это не позволит, т.е. можно то оно можно, но больно дорого.


Вообще то строка и список в питоне тоже объекты, от них даже наследоватся можно.
Понимаешь с тобой интерсно беседовать, если ты видишь хоть какое преимущество шарпа (обычно над плюсами) ты говоришь что это сверхдостижение, а любые преимущества других языков над шарпом становятся мелкими фичами

FR>>Кстати у тебя там ошибка цикл начинается с нуля и выражение calc1.Calc(i, i); должно вылетать с исключением деление на ноль,


VD>Не должен. Это вещественные числа и при вычислениях они не совсем 0.


Да ну, по любому переполнение будет.

FR>>(и скорость вычисления похоже не верна так как вылетало на первой строке но ты не ловил), так что мне пришлось цикл с единицы начать.


VD>Ничего там не вилетает. Иначе было бы исключение и просто ничего бы не выполнилось. Ну, да можешь поправить на еденицу и перемерить. Исходники то доступны.


Я проверил скорсть та же остается.
Похоже старый баг (некоторые говорят фича) VC и в шарп перешел, заключается в игнорировании ошибок
с плавающей точкой.

FR>>Ладно, но шарп приложения тоже подтормаживают как и ява.


VD>Это миф пришедший с времен когда Ява была интерпретатором. Думаю, твои эксперементы с этим тестом должны были тебя убедить.


Не я по янусу сужу, подтормаживает гад прилично, хотя машинка слабая у меня.
... << RSDN@Home 1.1.3 stable >>
Re[20]: С++ и .NET
От: FR  
Дата: 22.10.04 21:15
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, FR, Вы писали:


FR>>В общем питон парсит в 100 раз быстрее,


VD> Естественно. Ведь C# не парсит, а компилирует. Причем долболомы из МС ненашли ничего умнее чем сделать АПИ динамической компиляции в виде обретки над компилятором командной строки. Так что при каждом "парсинге" поднимается отдельная копия компилятора который порождает сборку. Ну, а окончательная компиляция (джит) вообще происходит при первом проходе исполнения.


вообще то питон тут тоже компилирует.

FR>> но C# выполняет в 10 раз быстрее, а C++ отстает от обоих.


VD>Собственно о этих цифрах я тебе и гворил. Минимум десятичный порядок разницы. Это классика для компилятор vs. интерпретатор. Более того это говорит, о том что интерпритатор написан довольно качественно. Однако чем сложенее будет задача, тем бльше будет разрыв. Так что в критических ко времени задачах Питон непригоден. А скриптам для игр (о чем мы с тобой как-то говорили), согласись, очень не помешал бы этот порядок. Конечно если создать энтилектуальный компилятор, то может из Питона и можно выжать по более, но вряд ли сильно. Тут уже будут играть свою роль нетипизированность языка. Ведь любой элемент списка может на ходу сменить тип хранимых в нем данных. А это уже никак не оптимизируешь.


Я думаю необходимость производительности сильно зависит от задачи, а на этом примере он все равно шустрее плюсов оказался
... << RSDN@Home 1.1.3 stable >>
Re[21]: С++ и .NET
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.10.04 01:30
Оценка:
Здравствуйте, FR, Вы писали:

FR>вообще то питон тут тоже компилирует.


Что-то результаы и банальный логический анализ синтаксиса говорят об обратном.

FR>Я думаю необходимость производительности сильно зависит от задачи, а на этом примере он все равно шустрее плюсов оказался


Если постараться плюсовый вариант будет приблизительно таким же. Я же говорю, что разница между компиляторами и интерпретаторами приблизительно порядок. В общем, тут разница алгоритмическая.

ЗЫ

Мы же о другом говорили. Незнаю насколько я тебе продемонстрировал, что такое Шарп, но по мне так Шарп это как раз тот самый анлог типизированного Питона на котором можно писать с приблизительно той же легкостью, но при этом получать код приблизительно такого же качества как С++. Понятно, что в чем-то он проиграет и питону, и С++, но только на нем можно получить все в комплексе и по более низкой цене.

Может показаться, что я фанат шарпа. Но это не так. От фанатов я отличаюсь продажностью. Я продам Шарп как только увижу нечто превосходящее его по кумулятивному эффекту. Я вижу много неодостатков у Шарпа и Дотнета. Но я не вижу, чтобы у них были конкуренты которые решили бы эти проблемы лучше. А вот Шарп развивается. Хотя и не так быстро как хотелось бы. Есть много попыток. Они пока что не объеденены в один супер-продукт. А жаль.
... << RSDN@Home 1.1.4 beta 3 rev. 206>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[20]: С++ и .NET
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.10.04 01:30
Оценка: :)
Здравствуйте, FR, Вы писали:

FR>из командной строки интерпретатора?


Можно и из командной. Но для меня это как-то всегда казалось убогостью. Зачем мне интерпретатор вообще, и из командной строки в частности?

FR>Угу, только питон в этом деле на плюсы похож, начинаешь лезть в дебри, то быстро перестаешь думать что уже все знаешь


Да я как бы не на ровном месте его смотрел. Интересные вещи на ус намотал. И, кстати, похожести на плюсы не обнаружил. Но понятное дело, в любом деле можно дорыться до глубин не видных на поверхности.

FR>У питона тоже прозрачная интеграция с C/C++ а учитывая SWIG то вообще просто пишешь нужные расширения на плюсах, а все остальное делается автоматом.


Гы. Плюсы идут лесом! Расширять дотнет можно прямо на Шарпе. Описал функцию в шарпе и вперед.

FR>Ну судя по абзацу ниже все-таки религиозная


Не. Ошибашся. Это может и пропаганда, но на основе фактов и личного опыта. Тут веры никакой. А в религии вера — это главное.

FR>ну так я про что и говорил все время, классика ядро плюсы, верхний уровень скрипт.


Зачем? Чтобы было медленнее и ненадежнее? Конечно можно ядро на плюсах... Но зачем скрипты то? Хотя и ядно смысла не много. Разве что особо критичные ко времени участки вынести в плюсы.

FR>так ты же все время говоришь что Шарп ускоряет работу, так Питон еще больше ускоряет для

FR>этого конкретного примера, кода то намного меньше.

Во-первых, не так чтобы на много. А во вторых мего меньше от встроенности. Ну, и разница в скорости всего так на порядок. С плюсами то поняно, там интерпретация в самом коде была. А тут уж извини, чистый питон vs. дотнет...

FR>Вообще то строка и список в питоне тоже объекты, от них даже наследоватся можно.


Вопрос не в этом. Вопрос в том, что универасльные фунции на Питоне будут в те смамые 10 раз медленнее чем аналогичные на Шарпе.

FR>Понимаешь с тобой интерсно беседовать, если ты видишь хоть какое преимущество шарпа (обычно над плюсами) ты говоришь что это сверхдостижение, а любые преимущества других языков над шарпом становятся мелкими фичами


Почему? Я вижу некоторые приемущества. К сожалению, некоторые из них являются продолжением недостатков. Над плюсами приемущества качественные. Там не то чтобы строки встроенные. Там такие вещи как безопасность и надежность начинажют выступать. А с Питоном... Плюс туда... минус сюда. В итоге паритет. Но скорость и надежность не пропьшь. Плюс среда. Плюс рефлекшен... в итоге какого-то приемущества оснобо не чувствуется. Я просто вижу, что задачи нужные мне просто не реализовать на Питоне. Они и так на приделе той же скорости. А если они еще в 10 раз затормозятся...

VD>>Не должен. Это вещественные числа и при вычислениях они не совсем 0.


FR>Да ну, по любому переполнение будет.


Если будет — будет исключение. К тому же сравнивались результаты. В общем, махни на единицу. Ровным счетом ничего не должно измениться.

FR>Я проверил скорсть та же остается.


Ну, о чем я и говорю.

FR>Похоже старый баг (некоторые говорят фича) VC и в шарп перешел, заключается в игнорировании ошибок с плавающей точкой.


Это не баг. Это особенности препроцессора. 0 в вещественном виде сильно отличается от целочисленного.

FR>Не я по янусу сужу, подтормаживает гад прилично, хотя машинка слабая у меня.


А это еще один мих. Скачай профайлер и погляди на, что там приходится основное время. Думаю, ты будешь сильно удивлен тем что это окажется JET (написанный, кстати, на С++).
... << RSDN@Home 1.1.4 beta 3 rev. 206>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.