MrKMV34: браузерные движки - да, так о том и был вопрос, а не о том, как привнести в JS новый синтаксический сахар, который в CS/TS. А Node.JS сам десктопный, зачем городьбу городить?
Антон Жуков: на паскаль он ничем не похож, кроме слов var, function и еще 1-2 двух (да и у них синтаксис другой). На C/C++ похож гораздо сильнее. Но имеет свои особенности.
SerGio1313: если я сяду на велосипед, то боюсь, что сразу упаду т.к. я даже теорию не знаю, а ехать на велосипеде это ведь практика, если я правильно понимаю)
SerGio1313: вам надо для курсача/диплома, или вы реально хотите знать архитектуру? Если реально, то кроме раскопок исходников, вариантов нет. Как, впрочем, и по винде (десктопной) тоже ничего толкового нет. Приведите пример книги об архитектуре десктопной ОС, для которой вам нужен аналог под Android.
Робот: jsfiddle я не пользуюсь, но думаю, что там должна быть консоль, просто надо ее поискать или включить. В вашем случае именно mousedown будет undefined, откуда напрямую следует, что вы неправильно написали имя события.
Mark Doe: нет, термин "BCL" здесь хуже. Де-факто BCL - это не вся стандартная библиотека C#, а лишь ее часть.
Скажем, Winforms не является частью BCL, но его можно считать частью стандартной библиотеки C# (мутантов вроде Mono мы отбрасываем), и можно и нужно учитывать при сравнении с библиотеками других языков.
А лучше вообще не останавливаться на стандартной библиотеке, а рассматривать вообще все библиотеки, которые есть для данного ЯП и данной его реализации, включая и сторонние тоже (особенно, если они бесплатные).
Так вот, возвращаясь к вопросу, "общий набор" библиотек для C# - намного мощнее, чем "общий набор" библиотек для Python. Это вообще характерно для других кроссплатформенных средств - они во многом уступают тем средствам, что заточены под 1 платформу.
nirvimel: > Аналог C# - это Java (грубо говоря).
Едва ли. Далековато ей до C#. Если бы надо было писать под десктопный линукс, то скорее уж я бы питон выбрал. Особенно если GUI не требуется или почти не требуется. Java ближе к C/C++.
Под андроидом Java - это вообще прямой аналог C/C++ под WinAPI. Ну уж никак не аналог C#, который на винде-то выше уровнем, чем нативное API винды.
> .NET (выпущенный позже) - это аналог JVM
Сильно усовершенствованный аналог. Что по синтаксису, что по библиотекам, что по IDE.
> На сегодня они оба кроссплатформенные,
C# от MS ни разу не кроссплатформенный. А C# не от MS - это совсем не тот C#. Подобные реализации - это еще одна разновидность "мутантов".
> Я не пойму какое отношение к этим статическим языкам имеет Python
Что значит "статический язык"? И что, это такая важная характеристика, чтобы по ней делить языки на разные группы?
> Python (который, кстати, полностью кроссплатформенный).
Как "полностью"??? 0_o
Вы хотите сказать, что на Python можно писать под ВСЕ платформы, какие есть на свете? Или я не так понял?
Python - кроссплатформенный на десктопе, но по направлению "десктоп-мобил" он еще хуже джавы. Не говоря уж о более редких платформах с их спецификой.
Alexey Vasilev: вот прямо ТОЛЬКО в этом скрипте, а в остальных все гладко? Типа пасхальное яйцо?)
Раз вы занимаетесь направлением, связанным с реверс-инжинирингом, то вы должны уметь путем экспериментов локализовать проблему, чтобы говорить, на чем конкретно там тормозит. Тогда и ответ конкретный дать будет легче.
Serj-One: А с какой стати это должно меня смущать?
Если вы имеете в виду, что автор работает в команде, где он занимается только фронт-ендом - так серверные фреймворки, в принципе, допускают такое.
Пусть он редактирует только View и Layout, и в них редактирует только HTML+CSS+JS, а то что внутри <?php ?> - обходит стороной.
А если он indie, то на одном лишь фронт-енде он по-любому далеко не уедет. Да и вообще, хоть немного уметь бэк-енд в любом случае надо - как вы реализуете скажем AJAX без умений в бек-енде?
romy4: да, под виндой сижу. Почему под виндой - потому что в 99% случаев у меня заказывают софт на винду. Вот на смартфонах основных у меня таки линуксо-подобная ОС - Android, а люмия как раз без дела лежит пылится, и причина снова та же. Что же до веба, то я им слишком мало занимаюсь, чтобы менять ОС. Вот куплю новый ноут - возможно, будет линукс на нем. А так, даже Mac и iOS пожалуй востребованнее. Будет тыров 30-50 свободных - скорее макбук возьму.
Roman Kitaev: насчет десктопа, согласитесь, Qt по мощи очень далеко до .NET. Этого не признают только те, кто не хочет этого признавать. Например, те, кто профессионально разработкой под десктоп не занимается и потому преимущества .NET им не нужны, и свои сугубо личные пристрастия они почему-то процируют на других.
SaNNy32: 1. Так какого же черта вы незаконченную, кривую и вообще нерабочую программу приводите в пример?
Так нечестно! По моей ссылке с codeproject, есть рабочий исходник с NPOI без кривизны. Скачал - запустил.
2. Нет, не ставится со студией. Не лгите. У меня аж несколько студий стоит, однако в окне добавления ссылки на вкладке .NET Framework этой ссылки нету.
Можно, конечно, нажать кнопочку "Обзор" и поискать самому, ну так может вы подскажете, где поискать, если вы такой эксперт по COM-обертке Excel?
3. Если не открыть Workbook, то оно ВООБЩЕ работать не будет.
4. Подсказки подскажут, что есть классы _Worksheet и Worksheet, но разве они подскажут, какой где использовать?
Приходится реально пробовать методом тыка.
5. Можно и сравнить. Мог бы и на миллион поспорить. У меня - опыт и с вордом, и с экселем, и я прекрасно помню, как у меня все тормозило, и даже могу объяснить, почему
Может даже на codeproject напишу такую статью, чтоб все видели, какой убогий антиквариат этот COM. На досуге как-нибудь. Сейчас я другим занят.
> не нужно выдавать неумение работать с объектной моделью Excel за сильную сторону библиотеки NPOI
Это Я еще и не умею?!
Вы кидаете нерабочие исходники без открывания Workbook, я вам указываю на ошибку, и я еще и не умею?
И кто вы после этого? Нуб вы упёртый.
А я - специалист по VBA (это одна из моих работ, я пишу макросы для Word, с уникальными решениями, по которым на весь инет ни одного кусочка кода не найдешь), и специалист по средствам разработки (то есть я пишу IDE и высокоуровневые фреймворки). Одно из направлений, над которым я работаю, это именно удобные обертки, абстрагирующие от COM Access/Word/Excel, на чистом C++ под компилятором MinGW. А там ой как есть над чем поработать, ибо на данный момент динозавр COM (ему уж лет 20, а .NETовским его оберткам - лет 12, и с тех пор ничего не изменилось) - это кривое УГ.
Если бы в .NET входила нормальная обертка для COM, то я бы не был против. Но Microsoft.Office.Interop - это фуфло почти что из прошлого века.
Roman Kitaev: для веб-разработчика вполне возможно, что линукс и пойдет. Для мобильного и уж тем более десктопного (то есть в 99% случаев - под эту самую винду) - это изврат.
SaNNy32: ну, первое, что бросилось в глаза - а завершать Application кто будет? Выполните такой вот код раз 20 и гляньте в диспетчер задач. Это норм?
Ну и да, почему мы окно эксела не скрываем? Когда окна на экране мелькают - это норм?
Второе (и главное) - где этот ваш Microsoft.Office.Interop.Excel?
Вот у меня Office 2003 стоит, а сборки такой я что-то не вижу. А раз ее нет, то придется добавлять ссылку непосредственно на COM-сборку, где и объектная модель другая (причем, в разных версиях вполне может быть разная) и вообще совместимость версий надо проверять.
Третье - какой нафиг ActiveSheet, если вы еще Workbook не открыли? Или у вас и без того работает, и после этого вы спрашиваете о подводных камнях?
Вы, видимо, сами впервые увидели этот COM, раз такое пишете.
Четвертое - вот здесь:
Excel._Worksheet workSheet = (Excel.Worksheet)excelApp.ActiveSheet;
Когда в одной и той же библиотек один класс называется _Worksheet, а другой Worksheet, вот и запоминай и смотри не перепутай - это вообще норм библиотека?
Да я даже в Java такого не видал...
Пятое - это быстродействие.
Вся объектная модель офиса, неважно в Word или Excel, неважно откуда мы ее юзаем (из VBA или извне) - это всегда просто жуткие тормоза.
При каждом таком обращении к Cells, там внутри выполняется куча лишних действий.
Попробуйте хотя бы 1000x1000 ячеек так изменить и посмотрите, сколько это займет времени.