зачем нужен C# если есть Assembler , C++, Delphi .

 
1 2 3 4 5 6 7
CA Mishka #08.10.2005 01:30  @Реконструктор#07.10.2005 14:43
+
-
edit
 

Mishka

модератор
★★★
Реконструктор> Первая версия появилась в 83-м.

Кто ею пользовался?

Реконструктор> Появилась в 92-м. Так что у тебя в голове какая-то путаница по поводу "до" и "после". Историю учи.

Первый раз в США я попал в 1992 — VB изучали только этузиасты. А вот в 1995 — тут уже началось серъёзнее. Действительно, распространение началось с 3-й версии, но далеко не сразу.


Реконструктор> И зачем мне, в конце-концов жаба/Ц#?

Т.е. бинарную переносимость от переносимости исходного кода не отличаем? Где мой Дельфи под Irix-ом, я спрашиваю? А где Corel под Фряхой? Он же на С написан?


Реконструктор> Ты шутиш? Ты кода-нибудь видел дизайнера под линуксом? Дизайн - это либо винды, либо Мак ОС.

А чем Mac OS X так сильно отличается от Linux? У меня у дочки есть Aplle Laptop — я в нём не шибко разбираюсь, чуть что, сразу в командную строку и как в обычном юниксе.

Реконструктор> Реконструктор>> Да, ты можеш написать, например JOffice или JDraw, намного быстрее, чем М$ и Corel сделают MS Office и CorelDraw, но покупать твои продукты почему-то никто не будет. Почему-то быстрописание рынок не оценит.

Он даже может сделать их лучше, надёжнее, быстрее. Даже на С++. Но покупать всё равно никто не будет. :D Язык тут причём?


Реконструктор> МС Офис - исключение. Хватит болтать мне о исключениях. Ты знаеш что произойдет с фотошопом, если его напишут на джаве? Его просто перестануть использовать и соотв. покупать. Ты очень хорошо понимаеш о чем идет реч. Не валяй дурака.

С чего ты так решил?

Реконструктор> На асемблере это будет работать быстрее всех, на Ц - чуть-чуть медленее, на окалме - намного медленнее. Выводы оставляю тебе.

Гриш, реализуй функцию Аккермана на ассемблере, померь время, которое это займет, померь быстродействие. А потом сравни. Чего языком-то молоть?

Реконструктор> Опять какие-то частные случаи. Ну, может хватит?

Жизнь, она вся из частных случаев и состоит.

Реконструктор> Эта причина не совсем ламерская. Когда делаеш хеширование, или вообще каким-то образом вычисляеш индекс, такое часто случается. Иногда сам идекс правильный, но вычисление размера массива оказыватся неправильным.

За такое программирование надо канделябрами. Где это так получается?

Реконструктор> Для тебя прохождение по массиву - единственный манер работы с ним?

Не единственный, но довольно частый. Например, как ты отсортируешь массив, если не пробежишься по всем элементам, да не по разу — может не в прямом порядке, но по всему массиву точно? Или поиск подстроки — ну-ка выкатывай алгоритмы. Хм, а как там быть с приходящим сигналом и его обработкой — как ты буфер обрабатываешь? Через один элемент?

Реконструктор> Реконструктор>> А уборщик - это хорошо, но если нет возможности его отключать, то язык самоизолируется от очень большого класса задач.

Огласите, пожалуйста, весь список! (С) "Операция "Ы" и другие приключения Шурика".


Реконструктор> Чем жаба производительней Дльфи и ВБ?

Жаба производительнее VB — тут вопросов нет. Да и с Дельфи поспорит.

Реконструктор> Чем Ц# производительней жабы? Нафиг мне все это учить?

C# точно может быть производительнее Жабы — у нее виртуальная машина продумана лучше. Я на эту тему общался с человеком, который должен был писать компилятор для MS — тем самым, который написал за месяц TurboPascal 3.0 со всеми библиотеками для ДВКахи.

Реконструктор> Выучил ВБ - и хватит с меня. Если ко мне придет толстый и не совсем отталкивающе-отвратительный банкир и потребует софт, и готов выполнить мои безумные финансовые претензии, то я буду писать на ВБ. Зачем мне все остальное учить?

Ученье свет, а не ученье — тьма! Слышал такую поговорку. :D Для того, чтобы научиться ценить языки — их надо выучить хотя бы несколько штук. Это относиться как к естесственным языкам, так и к искусственным.

Реконструктор> От производтства мусора толку мало. Надо производить нужные вещи. А нужные вещи, как мы уже выяснили, пишут на Ц++.

Конечно, конечно. Система управления лондонским аэропортом была написана на Smalltalk-е — всего 10,000 строк. Телескопы каким языком управляются? А задачи связи в той же AT&T и Bell Lab на каком писались (небось и не слышал про Джовиал?)?


Реконструктор> Потеря указателя можно устранить в процессе отладки. А мусоросборщика запретить нельзя.

А можно и не устранить.

Реконструктор> Пока ;)

Едешь на машине, делаешь поворот, а указатель, тут как тут, взял и потерялся. :D

Реконструктор> #define out(port, byte) _asm { out port, byte }
Реконструктор> _inline void out(port, byte) {_asm { out port, byte }}

Ну, ну — запусти под виндой, под линем, под любым юнихом — что получиться?

Реконструктор> Ты думаеш, жаба приложения обрабатывают аудио поток? Ты живеш в глобоком заблуждении.

Вроде, такие потоки обрабатываются специальными чипами? Или мы по-старинке?

Реконструктор> Ну, это уже не странно, так говорят все девелоперы. :rolleyes: [»]

Девелоперы, это не те, которые на только на С/С++ пишут, а те, которые мозги по назначению используют.
 
RU Dem_anywhere #08.10.2005 03:24
+
-
edit
 

Dem_anywhere

аксакал
★☆
Mishka>Это у некоторых уже давно было. Скажем, тот JIT.
JIT - это из байткода в натив. а я про "из текста в байткод". Например сервер-сайд скрипты на страничке. Или автосгенерённые триггеры в SQL...
Яве такое и не снилось.

Dem_anywhere>> под жаву нативную длл писать - умучаешся
Mishka>Интерфейс генериться, пару инклудов, потом взять параметры через поддерживаемые классы. И работать на С++ — в чем сложность-то?
В том, что две никак не связанных среды разработчика иметь надо. Притом даже от разных разработчиков скорей всего, с разной логикой работы...
А в ВСтудии - всё в одном проекте можно, и дебажить тоже...
 

Lerm

втянувшийся
Dem_anywhere, 07.10.2005 15:24:46:
1) Компилеры стоят не в пакете разработки - а в рантайме, что позволяет проге сгенерить программу (на том же С# ), откомпилить её и использовать. В частности ASP.Net этим пользуется - бинарный (пусть и байт-)код выполняется быстрее, чем интерпретируемый, типа РНР (а для него компилеры немалые деньги стоят)
Mishka>Это у некоторых уже давно было. Скажем, тот JIT.
JIT - это из байткода в натив. а я про "из текста в байткод". Например сервер-сайд скрипты на страничке. Или автосгенерённые триггеры в SQL...
Яве такое и не снилось.
[»]
 


Хм. :D Да ну? Интересно, как это динамические страницы на Java работают? А что такое JSP? Чем отличается JDK от JRE, знаете? Что такое tools.jar и sun.tools.javac.Main? :P Или вы думаете, что компилятор Java на C написан?
You live and learn. Or you don't live long.  

Mishka

модератор
★★★
Mishka>>Это у некоторых уже давно было. Скажем, тот JIT.
Dem_anywhere> JIT - это из байткода в натив. а я про "из текста в байткод". Например сервер-сайд скрипты на страничке. Или автосгенерённые триггеры в SQL...
Dem_anywhere> Яве такое и не снилось.

Функция eval в любом шелле, да и JIT бывает разный — OpenJIT: A Reflective JIT Compiler for Java:
Architecturally, OpenJIT consists of two major portions. The OpenJIT frontend performs Bytecode decompilation, high-level program analysis and transformation. OpenJIT backend performs low-level program analysis and transformation, code generation and run-time support. The backend alone can act as a standalone JIT compiler, whereas the frontend is meant to be invoked only when heavy-duty optimizations are required.
 


Это во-первых, :D
Во-вторых, как Рома сказал — SDK спасет человечество.


Dem_anywhere> А в ВСтудии - всё в одном проекте можно, и дебажить тоже... [»]

Т.е. умаятся с добавлением в проект — это и есть проблемы написания DLL для Java? А само написание функций DLL — это раз плюнуть?

Да используйте Эклипс — там тоже можно всё вместе подстроить, благо, что можно всяких доступных плагинов сгрузить с IBM — хоть для С++, хоть для PHP.


Кстати, тут много про сборку мусора говорили, вот в пятерочке уже и это дело можно подстраивать получше :) :



Ergonomics in the 5.0 Java[tm] Virtual Machine


Ergonomics in the 5.0 Java[tm] Virtual Machine

// java.sun.com
 

3. Behavior based tuning

Prior to the J2SE platform version 5.0 tuning for garbage collection consisted principally of specifying the size of the the overall heap and possibly the size of the generations in the heap. Other controls for tuning garbage collection include the size of the survivor spaces in the young generation and the threshold for promotion from the young generation to the old generation. Tuning required of a series of experiments with different values of these parameters and the use of specialized tools or just good judgment to decide when garbage collection was performing well.

In version 5.0 two parameters based on the desired behavior of the application have been introduced. These are
  • Maximum pause time goal
  • Application throughput goal.
  • Setting these goals can be used to tune garbage collection. It should be emphasized that the goals cannot always be met. The application requires heap large enough to at least hold all of the live data. That minimum heap size my preclude reaching these desired goals.
     


     
    US Сергей-4030 #08.10.2005 07:22
    +
    -
    edit
     

    Сергей-4030

    исключающий третье
    ★★
    IDEAS> нажал выполнить и все работает , а всякие ассемблеры и Спп , пусть маяться хе хе!
     


    Ага, ага. Нажал, скажем, кнопочку "deploy" и на другом конце земли в работающем сервере на лету поменялись бизнес-правила. При этом "нажал" не разработчик этой системы, который ее знает на 100%, а средний администратор, который знает, как деплоить модуль в "обычном" сервере приложений и которому не надо платить сто штук баков зарплаты чтоб он хотел и мог разбираться в проприетарном механизме такого deploy'я. Не говоря о том, как "просто" это написать в Дельфи. :lol:
     
    Это сообщение редактировалось 08.10.2005 в 17:04

    Zeus

    Динамик

    Mishka> Кстати, вопрос — есть поддержка в Дельфи мнопоточности — мониторы, семафоры, события, сообщения, нити, возможности по реализации асинхронных обработчиков событий? [»]

    Есть.
    И животноводство!  
    BG Реконструктор #09.10.2005 02:25
    +
    -
    edit
     
    По вопросу почему никто не будет покупать фотошоп на жабе. :D Скачал первый попавшейся редактор изображений на жабе. Скомпилировал и запустил. Заредил картинку. Потом запустил фотошоп и открыл ту-же картинку. Результаты неутешительные. ;) Кроме того, посмотрел и в конзоль. А там:

    code text
    1. C:\temp\Amazed_1.0\Amazed\src>java Amazed
    2. Loading time: 578
    3. Total lines of java code in this directory: 8867
    4. Exception in thread "Image Fetcher 0" java.lang.OutOfMemoryError: Java heap space
    5. Exception in thread "Image Fetcher 0" java.lang.OutOfMemoryError: Java heap space
    6. Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
    7. Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
    8. Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
    9. Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
    10. Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
    11. Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
    12. Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
    13. Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
    14. Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space


    Короче, это даже не юмор. Это пародия. Детского сада.
    Прикреплённые файлы:
     
     
    US Сергей-4030 #09.10.2005 03:17
    +
    -
    edit
     

    Сергей-4030

    исключающий третье
    ★★
    Короче, это даже не юмор. Это пародия. Детского сада.
     


    Эт точно, не юмор, это грустно. Вам написать редактор изображений на С++, который будет падать на любом размере памяти? Мне не трудно, если нужно - не стесняйтесь, заказывайте. ;)
     

    Mishka

    модератор
    ★★★
    Mishka>> Кстати, вопрос — есть поддержка в Дельфи мнопоточности — мониторы, семафоры, события, сообщения, нити, возможности по реализации асинхронных обработчиков событий? [»]
    Zeus> Есть. [»]

    Это проекция на то, что предоставляет Винды или они немного более умные и могут работать с OOP? Т.е., если я запустил нитку, то создание в ней новых объектов на уровне языка будет атомарным? Скажем, в VC++ надо обязательно линковать с библиотекой, которая поддерживает многопоточность. А в Дельфи как?
     
    BG Реконструктор #09.10.2005 12:44  @Сергей-4030#09.10.2005 03:17
    +
    -
    edit
     
    Сергей-4030>
    Короче, это даже не юмор. Это пародия. Детского сада.
     

    Сергей-4030> Эт точно, не юмор, это грустно. Вам написать редактор изображений на С++, который будет падать на любом размере памяти? Мне не трудно, если нужно - не стесняйтесь, заказывайте. ;) [»]

    В некоторых случаях пологатся только на прехваленый GC - не очень блестящяя идея. ;)
     
    RU Balancer #09.10.2005 13:38  @Реконструктор#09.10.2005 12:44
    +
    -
    edit
     

    Balancer

    администратор
    ★★★★★

    Реконструктор> В некоторых случаях пологатся только на прехваленый GC - не очень блестящяя идея. ;) [»]

    На реалтаймовом сервере l2j, даже у меня с моим онлайном по 20 человек, ежесекундно заказываются и высвобождаются десятки объектов, всего активных объектов - сотни тысяч, м.б.- миллионы (трудно прикинуть точно, профайлер ломает мучать пока). Есть сервера, где на l2j играет по 1500 человек. Думаю, это создания/освобождение тысяч, если не десятков тысяч объектов в секунду.

    И, ведь, вот удивительно, всё это работает! :D В реальном времени, между прочим. И по довольно отстойным алгоритмам (оптимизировать там ДОФИГА)

    Так что, наверное, GC - идея удачная :)

    А вот на Си++ были бы постоянные утечки памяти и/или потери указателей...

    Кстати, фанатики Си++ на манер представленных на этом форуме, всё хотят создать такой же проект на Си++. Вот только на Java сервер работает уже больше года, а на Си++, не смотря на наличие кучи желающих и готового рабочего отлаженного кода на Java, даже с нуля писать не нужно, только перевести, тем не менее, дальше разговоров дело не идёт :)
     
    US Сергей-4030 #09.10.2005 18:37
    +
    -
    edit
     

    Сергей-4030

    исключающий третье
    ★★
    Реконструктор> "высокая скорость написания", как и высокая скорость производства вообще (когда участвует человеческий фактор), несовместимы с качеством.

    Совместимы легко
     


    Более того, не просто совместимы, а связаны неразлучно. Собственно, "высокая скорость написания" и подразумевает - "сохраняя некоторый необходимый уровень качества, разрабатывать быстрее, нежели до того".

    Java - это ни то, и не другое. GUI для неё вторичен, я вообще никогда ещё не писал GUI под Java.
     


    При том, библиотеки поддержки GUI там очень хорошие. См, например, здесь. Не то, чтобы уж крутой показатель, но вполне-таки себе гуишный GUI. Причем в этом проекте куча ограничений. А вот application - скажем, такие:

    [attachmentid=19196]

    - и здесь все чисто джавовое, без всяких GUI оболочек-ускорителей. А с ускорителями - см тот же Eclipse. Или JBuilder.


    Прикреплённые файлы:
    mnr.PNG (скачать) [9,8 кБ]
     
     
     
    US Сергей-4030 #09.10.2005 18:45
    +
    -
    edit
     

    Сергей-4030

    исключающий третье
    ★★
    Дело в прямизне рук - java GUI ИМХО это высший пилотаж и множество хороших вещей было загублен именно GUI на java
     


    Почему?! Я, скажем, довольно плотно знаком как с Виндовским GUI, так и с Джавовым. И мне кажется, что Джавовый API куда как лучше разработан.
     
    US Сергей-4030 #09.10.2005 18:47
    +
    -
    edit
     

    Сергей-4030

    исключающий третье
    ★★
    НА Delphi можно написать по-моему все кроме драйверов пусть только под виндоус.
     


    Как раз драйверы очень даже можно писать и на Дельфи. Драйвер по Виндовз - это, по большому счету, просто DLL с некоторым стандартным интерфейсом.
     
    US Сергей-4030 #09.10.2005 18:55
    +
    -
    edit
     

    Сергей-4030

    исключающий третье
    ★★
    Когда появился VB, народ дружно закричал - все! Теперь все будет писатся на VB. Потом появился Дельфин - то-же самое. Джава - та-же история. Сейчас в моде Ц#. Они только убивают друг-друга, а Си++ смотрит сверху и снисходително улыбается.
     


    Собственно, само противопоставление уже показательно. Синтаксис и семантика С++ vs Java, честно говоря, имеют малое отношение к теме. Вернее (на мой взгляд) бесспорно, что Джава - язык более строгий и в нем меньше соблазнов и подводных камней чтобы нарисовать темный лес, в котором утрахаешься разбираться, но главное вовсе не это, а платформа Java.
     

    Zeus

    Динамик

    Mishka> Это проекция на то, что предоставляет Винды или они немного более умные и могут работать с OOP? Т.е., если я запустил нитку, то создание в ней новых объектов на уровне языка будет атомарным? Скажем, в VC++ надо обязательно линковать с библиотекой, которая поддерживает многопоточность. А в Дельфи как? [»]

    Темный лес, мало что понимаю :)
    Семафоры и прочее - просто виндосовские (во всяком случае, я только так пользовал, но я-то даже сокеты всякие вручную через API делал, а не компонентами - так что фиг знает. Тем более я дальше 5-й Дельфи не ходил :)). Нити - это просто наследники специального класса. Ну, модуль соответствующий сам подключается, даже не знаю, насколько это все умно :) Во всяком случае - достаточно просто.
    И животноводство!  

    TEvg

    аксакал

    админ. бан
    >Но тогда некоторые красивые рюшечки остаются за бортом. Например попробуйте написать на Делфи программу которая будет показывать сколько времени прошло с момента последнего нажатия пользователем клавиши или дерганья мышки не в ее окне а в системе в целом.

    Может я чего-то не допираю, но в чем сложность-то?

    Вешаем перехватчик на клаву:

    var SysHook: HHook=0;
    ...
    SysHook:=SetWindowsHookEx(WH_KEYBOARD,@KeyHookProc,HInstance,0);

    где @KeyHookProc указатель на процедуру обработки.
    Пришем саму процедуру.

    function KeyHookProc(code:integer;wParam:word;lParam:longint):longint;
    begin

    // тут сообщаем о радостном событии - юзер нажал на клаву или там щупаем таймер за вымя.


    Result:=CallNextHookEx(SysHook,code,wParam,lParam);
    end;

    Усе работает на ура.. если мышку надо пощупать за вымя - тоже ставим перехватчик, только с параметром WH_MOUSE.

    Когда надобность отпала убиваем хуки
    if SysHook<>0 then begin
    UnHookWindowsHookEx(SysHook);
    SysHook:=0;

    Вот и все.. Замечу что в Це с плюсами тоже самое. Разница в синтаксисе. :)
     

    TEvg

    аксакал

    админ. бан
    Народ тут подсказывает что в 2000-й и ХРю появилась апишка GetLastInputInfo(); которая возвращает информацию о том когда юзер трогал клаву или мышь. Тут прога вообще на уровне детсада получается.
     

    Balancer

    администратор
    ★★★★★

    TEvg> Народ тут подсказывает что в 2000-й и ХРю появилась апишка GetLastInputInfo(); которая возвращает информацию о том когда юзер трогал клаву или мышь. Тут прога вообще на уровне детсада получается. [»]

    А кто тут о переносимости рассуждал? :D
     

    TEvg

    аксакал

    админ. бан
    Не я! Нету этой переносимости в природе. И не будет! Поэтому все эти переносимые платформы надо посылать. Переносима разве что чистая математика, да и то не всегда.
     
    Это сообщение редактировалось 10.10.2005 в 14:46
    US Сергей-4030 #10.10.2005 15:10
    +
    -
    edit
     

    Сергей-4030

    исключающий третье
    ★★
    Не я! Нету этой переносимости в природе. И не будет! Поэтому все эти переносимые платформы надо посылать.
     


    Точно. И мы не позволим фактам вводить нас в заблуждение.
     

    Balancer

    администратор
    ★★★★★

    TEvg> Не я! Нету этой переносимости в природе. И не будет!

    Вот у меня l2j-server.jar одинаково и под виндой и под Linux запускается. Полагаю, под MacOS, например, также пойдёт :D

    Что я не так делаю? :)

    >Переносима разве что чистая математика, да и то не всегда. [»]

    Толстенный сервер - это как бы совсем не чистая математика :)

    Или возьми, к примеру, Jabber-клиент Coccinella. Это пример использовавшегося мною переносимого GUI.
     
    BG Реконструктор #10.10.2005 15:53
    +
    -
    edit
     
    Так когда будем выводить на рынок быстрый и многоплатформеный java Photoshop? :D
     
    +
    -
    edit
     

    Kuznets

    Клерк-старожил
    ★☆

    TEvg> Мы вот недавно подарили 6 пеньков 133 и 166 МГц средней школе №9
    УЖАС КАКОЙ!!! Пожалели бы детишек...
    Вот из-за таких как вы они потом и смеются над качеством нашего образования :)
     

    BrAB

    аксакал
    ★★
    TEvg>> Мы вот недавно подарили 6 пеньков 133 и 166 МГц средней школе №9
    Kuznets> УЖАС КАКОЙ!!! Пожалели бы детишек...
    Kuznets> Вот из-за таких как вы они потом и смеются над качеством нашего образования :) [»]

    ну как сказать... в моей бывшей школе год назад точно стояли 286 без жестких дисков.

    но дело даже не в технике, а в преподавателях. в 10-11х классах информатику вел я, т. к. училка знала явно меньше :)
    учитывая что знал я тогда только Паскаль - представьте что знала училка :)
    Было у еврея всё плохо. Пришел за советом к равину. Тот - напиши над дверью - "Так будет не всегда". Стало всё ок. Пошел он благодарить. А тот ему - надпись не стирай. Злой чечен ползет на берег. ©Лермонтов  
    1 2 3 4 5 6 7

    в начало страницы | новое
     
    Поиск
    Поддержка
    Поддержи форум!
    ЯндексЯндекс. ДеньгиХочу такую же кнопку
    Настройки
    Твиттер сайта
    Статистика
    Рейтинг@Mail.ru