Востребованность языков программирования

Перенос из темы «Что, господа суровые С++ программисты, поспорим быстродействием с отстойной Джавой? ;)»
 
1 2 3 4 5 6 7
US Сергей-4030 #15.09.2011 17:33  @yacc#15.09.2011 17:29
+
-
edit
 

Сергей-4030

исключающий третье
★★
админ. бан
yacc> Э... а мы тут разве о бабле?

Мы о том, что уровень определяется результатом, а не выпендрежем.
 13.0.782.22013.0.782.220
BG Реконструктор #15.09.2011 17:39  @Сергей-4030#15.09.2011 17:24
+
-
edit
 
Сергей-4030> а перечислили

эээ где??
 6.0.26.0.2
BG Реконструктор #15.09.2011 17:45  @Сергей-4030#15.09.2011 17:26
+
-
edit
 
Сергей-4030> В очередной раз ты сел в лужу
Mishka> На уровне ассемблера будет так, как пожелает создаетель компилятора. Ему дано право выбирать.

Тоесть ты придерживаешся к этому мнению? :) Тоесть b |= 1; будет на машинном уровне или b |= 1; или b |= 0x80000000; в зависимости от решения того, кто написал компилятор? :D
 6.0.26.0.2
RU yacc #15.09.2011 17:54  @Сергей-4030#15.09.2011 17:33
+
-
edit
 

yacc

старожил
★★☆
Сергей-4030> Мы о том, что уровень определяется результатом, а не выпендрежем.
Ну это как-бы перпендикулярно сабжу...
Здесь же о ... :)
 3.6.203.6.20
US Mishka #15.09.2011 18:30  @Реконструктор#15.09.2011 17:45
+
-
edit
 

Mishka

модератор
★★★

Реконструктор> Тоесть ты придерживаешся к этому мнению? :) Тоесть b |= 1; будет на машинном уровне или b |= 1; или b |= 0x80000000; в зависимости от решения того, кто написал компилятор? :D
Я написал про битовые структуры и разборки с ними. И, как компилятор отображает в битовые структуры. Если ты этого не понимаешь, то твои проблемы. :)

Если ты берёшь битовые операции отдельно, то там биты не считают, а задают константой. Т.е. считает человек. А, как он считатет — это его дело. Кто-то скажет, что чтобы установить 32 бит в 1 в int надо выполнить b |= 0x80000000; Кто-то скажет, что это 31 бит. Кто скажет, что первый бит, а кто-то 0-й. Корректное выражение состоит в том, что ты хочешь высвавить в 1 most significant bit. Есть разная терминология в разных отраслях — иногда считают, начиная с most significant bit, а иногда и с less significant bit.
 6.06.0

Mishka

модератор
★★★

Nikita> Вы не в теме. Те event'ы о которых идёт речь - специальная разновидность членов класса на базе делегатов. К примитивам синхронизации они (почти) никакого отношения не имеют.

Позже сказал.

Nikita> Ваш смайлик очень символичен. Generic'и Java - убогий костыль сделанный через type erasure. Всё на что они годятся - прикручивать типизацию к примитивным контейнерам. Больше ничего полезного на них сделать нельзя. Тогда как уже в C# 2.0 - задолго до Java'вских ужосов - были реализованы нормальные честные полноценные generic'и со всеми прибамбасами.

Это не столь важно. :F Я сомневаюсь, что найдётся много людей, которые в GP хорошо понимают или способны писать нормальный код. GP предъявляет достаточно высокий порог знаний и понимания абстрактных вещей.
 6.06.0
RU Nikita #15.09.2011 19:55  @Сергей-4030#15.09.2011 17:24
+
-
edit
 

Nikita

аксакал

Сергей-4030> Функциональность шаблона есть операция над некоторым общим интерфейсом-wrapper'ом над разными типами объектов.

Вот именно про это я и говорю: Ваши представления о шаблонах\generic'ах находятся на уровне детского сада.

Сергей-4030> но это не отменяет ни того, что данным концептом можно пользоваться без помощи компилятора ни того,

Можно - в теории. На практике же это приводит к портянкам г-кода.

Сергей-4030> Ты хамишь, парниша.

Я всего лишь констатирую элементарный факт.

Сергей-4030> На будущее перед такими заявами приложи пейчек, как твои способности оценивает работодатель/клиенты.

Вы уж извините, но я не разделяю Вашего поклонения мамоне. И не меряю людей по их доходам.

Сергей-4030> И что, у тебя вся программа состоит из LINQов?

Ну вот в текущем проекте, например, всё упирается в манипулирование сложным\объёмным деревом объектов расплющенным в списки. Да ещё со счётчиками ссылок, транзакциями и версионностью впридачу. И собственно код - да, практически голимый LINQ.
Учитесь читать.  9.09.0

Nikita

аксакал

Mishka> Это не столь важно. :F

Это очень важно. Повторяю ещё раз: generic'и Java практически бесполезны, тогда как generic'и C# это мощнейший механизм.

Mishka> Я сомневаюсь, что найдётся много людей, которые в GP хорошо понимают или способны писать нормальный код. GP предъявляет достаточно высокий порог знаний и понимания абстрактных вещей.

Меня мало волнуют всякие там "индусы в душе" - я с ними не работаю. Моей же команде языковые фичи C# дают массу бенефитов.
Учитесь читать.  9.09.0
Это сообщение редактировалось 15.09.2011 в 20:12
RU Nikita #15.09.2011 21:42  @Сергей-4030#15.09.2011 17:33
+
-
edit
 

Nikita

аксакал

Сергей-4030> Мы о том, что уровень определяется результатом,

Вот именно что результатом, а вовсе не деньгами.
Учитесь читать.  9.09.0

Mishka

модератор
★★★

Nikita> Меня мало волнуют всякие там "индусы в душе" - я с ними не работаю. Моей же команде языковые фичи C# дают массу бенефитов.
Заинтриговал ты меня так, что я полез в MSDN. :)
Вот что сам MS пишет:

C# Generics and C++ templates are both language features that provide support for parameterized types. However, there are many differences between the two. At the syntax level, C# generics are a simpler approach to parameterized types without the complexity of C++ templates. In addition, C# does not attempt to provide all of the functionality that C++ templates provide. At the implementation level, the primary difference is that C# generic type substitutions are performed at runtime and generic type information is thereby preserved for instantiated objects. For more information, see Generics in the Runtime (C# Programming Guide).

The following are the key differences between C# Generics and C++ templates:

C# generics do not provide the same amount of flexibility as C++ templates. For example, it is not possible to call arithmetic operators in a C# generic class, although it is possible to call user defined operators.

C# does not allow non-type template parameters, such as template C<int i> {}.

C# does not support explicit specialization; that is, a custom implementation of a template for a specific type.

C# does not support partial specialization: a custom implementation for a subset of the type arguments.

C# does not allow the type parameter to be used as the base class for the generic type.

C# does not allow type parameters to have default types.

In C#, a generic type parameter cannot itself be a generic, although constructed types can be used as generics. C++ does allow template parameters.

C++ allows code that might not be valid for all type parameters in the template, which is then checked for the specific type used as the type parameter. C# requires code in a class to be written in such a way that it will work with any type that satisfies the constraints. For example, in C++ it is possible to write a function that uses the arithmetic operators + and - on objects of the type parameter, which will produce an error at the time of instantiation of the template with a type that does not support these operators. C# disallows this; the only language constructs allowed are those that can be deduced from the constraints.
 

Поэтому с выводимостью типов там ещё хуже, чем в C++ — смотри параметры в качестве генериков, к примеру. Про всякие специализации — вообще попа.

На досуге погляжу поглубже. Интересно стало.
 6.06.0

sxam

старожил

Не будем забывать про разные фрэймворки типа WPF, WCF, WF - насколько я знаю ничего такого уровня во frameworks в среде Java нет. И хорошей штуки типа параллелизма которые вошли в .Net 4.
 5.05.0

Nikita

аксакал

Mishka> Заинтриговал ты меня так, что я полез в MSDN. :)

Продолжаем ликбез.

Шаблоны и generic'и - перпендикулярные механизмы. Шаблоны работают в compile time, и их результат есть обычные класс\функция прибитые гвоздями. Если что-то не срастается - клиент просто получает ошибку компиляции. Generic'и же работают в runtime, и должны на ходу выдавать гарантированно верифицируемый safe-код для любых типов соответствующих constraint'ам аргументов. Отсюда и проистекают все ограничения.

Более того, нет никаких особых препятствий подружить шаблоны и generic'и. И в C++\CLI оное дело, хоть и через коленку, но реализовано, и там легко можно иметь шаблонизированный generic-класс.

Mishka> Поэтому с выводимостью типов там ещё хуже, чем в C++ — смотри параметры в качестве генериков, к примеру.

И опять мимо. Выводимость типов - тоже перпендикулярная фича. Её мощность в C# определяется связью механизма выводимости с лямбда-выражениями. И именно поэтому в нормальном LINQ-запросе практически не требуется уточнение аргументов generic-констрактов на всём протяжении.
Учитесь читать.  9.09.0

Nikita

аксакал

sxam> Не будем забывать про разные фрэймворки типа WPF, WCF, WF - насколько я знаю ничего такого уровня во frameworks в среде Java нет.

WF лучше не упоминать - оно как раз больное на голову с рождения. А вот WPF это сила.

sxam> И хорошей штуки типа параллелизма которые вошли в .Net 4.

В Java есть неплохие библиотеки для concurrency\параллелизма. Но в .NET оные реализованы в виде LINQ-провайдеров, и как следствие их моща настолько велика, в особенности Rx, что голову неподготовленного неофита взрывает одной строчкой :D
Учитесь читать.  9.09.0
US Сергей-4030 #16.09.2011 00:47  @Nikita#15.09.2011 19:55
+
-1
-
edit
 

Сергей-4030

исключающий третье
★★
админ. бан
Сергей-4030>> Функциональность шаблона есть операция над некоторым общим интерфейсом-wrapper'ом над разными типами объектов.
Nikita> Вот именно про это я и говорю: Ваши представления о шаблонах\generic'ах находятся на уровне детского сада.

Ну? А у тебя что-то другое? Расскажи, пожалуйста. Какая функциональность у генериков, кроме той, которую я указал? От того, что компилятор adapter'ы сам создает, появляется потусторонняя мошь?

Nikita> Вы уж извините, но я не разделяю Вашего поклонения мамоне. И не меряю людей по их доходам.

Понятно. То есть, работодатель не разделяет Вашего мнения о вашей ценности, ага? Знакомо.

Nikita> Ну вот в текущем проекте, например, всё упирается в манипулирование сложным\объёмным

А в нетекущем?
 13.0.782.22013.0.782.220

cholev

втянувшийся

sxam> Не будем забывать про разные фрэймворки типа WPF, WCF, WF - насколько я знаю ничего такого уровня во frameworks в среде Java нет. И хорошей штуки типа параллелизма которые вошли в .Net 4.

WPF действительно очень смелый шаг. По существо неть ограничений в визуальной представлении.
А binding действительно крут. Trigers, styles, DataTemplates, Device independent units, DirectX instead of GDI+
 9.09.0
RU yacc #16.09.2011 01:18  @Сергей-4030#16.09.2011 00:47
+
+1
-
edit
 

yacc

старожил
★★☆
Сергей-4030> А в нетекущем?
А в нетекущем может быть использовано что угодно - что позволяет быстрее написать приложение, ускорить его и четко сформулировать задачу, чтобы сделать меньше багов.
Хотя основной язык у меня сейчас по работе - Т-SQL, я, время от времени не стесняюсь в рабочих нуждах использовать perl\python\awk.
Если у тебя целевой проект под LAMP - нафига там Java? Или С++.
Если целевой проект, скажем, утилита чистки системного реестра или плагин к MS Office - опять же - нафига там Java?
Если целевой проект - клиент-серверное приложение - то на Java можно сделать только, скажем, GUI на клиентской части +\- ядро ( на клиентской части ) - сам сервер, скажем можно написать на C#.
Знание yacc\lex - еще более расширяет возможности динамического создания кода - без разницы какой будет целевой язык - python\c\c++\java\C#
 8.08.0
Это сообщение редактировалось 16.09.2011 в 02:30
RU yacc #16.09.2011 01:27  @Сергей-4030#16.09.2011 00:47
+
+1
-
edit
 

yacc

старожил
★★☆
Сергей-4030> Понятно. То есть, работодатель не разделяет Вашего мнения о вашей ценности, ага? Знакомо.
работодатель оценивает результат .
Если работодатель готов заплатить нехилые бабки за код на MDX\языке SAP\COBOL означает ли, что это лучшие ЯП? А? :p
 8.08.0
RU Nikita #16.09.2011 02:22  @Сергей-4030#16.09.2011 00:47
+
-
edit
 

Nikita

аксакал

Сергей-4030> Ну? А у тебя что-то другое?

Конечно.

Сергей-4030> Расскажи, пожалуйста.

Я ведь уже указал Вам ключевое слово - метапрограммирование. Можете начать изучение вопроса со статьи из Wikipedia, например. Ну а потом и до более высоких - математических - материй дойдём... :cool:

Сергей-4030> От того, что компилятор adapter'ы сам создает, появляется потусторонняя мошь?

Компилятор не только создаёт - это-то и обычные макросы умеют. Он ещё выводит типы, constraint'ы проверяет, обеспечивает гарантии и т.д.

Сергей-4030> Понятно. То есть, работодатель не разделяет Вашего мнения о вашей ценности, ага? Знакомо.

А давайте Вы не будете сосать палец. Идёт ? Спасибо.

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

*Можете завидовать :D

Сергей-4030> А в нетекущем?

Вы уж извините, но лично я серьёзными вещами занимаюсь, а не всякой понедельной ерундой. Так что с момента доступности production ready LINQ я работал - помимо уже упомянутого toolset'а - лишь над одним проектом. А он был весьма legacy + его миграция на новый .NET произошла, естественно, далеко не на следующий день после объявления RTM. Но вот потом, в новом коде, LINQ там использовался достаточно интенсивно. В особенности Rx, на котором делались все новые сложные модули UX + распределённая\асинхронная\параллельная обработка. А с LINQ to SQL ваялись новые модули работы с БД.
Учитесь читать.  9.09.0
US Сергей-4030 #16.09.2011 05:18  @Nikita#16.09.2011 02:22
+
-
edit
 

Сергей-4030

исключающий третье
★★
админ. бан
Сергей-4030>> От того, что компилятор adapter'ы сам создает, появляется потусторонняя мошь?
Nikita> Компилятор не только создаёт - это-то и обычные макросы умеют. Он ещё выводит типы, constraint'ы проверяет, обеспечивает гарантии и т.д.

Ну да, делает все, что должен делать adapter. Но вы же говорили, что отличается?

Сергей-4030>> Понятно. То есть, работодатель не разделяет Вашего мнения о вашей ценности, ага? Знакомо.
Nikita> А давайте Вы не будете сосать палец. Идёт ? Спасибо.
Nikita> Но раз Вас так сильно интересует тема, то могу Вам сообщить, что лично у меня к моим работодателям, ко всем - и бывшим, и нынешним - на протяжении всей карьеры, никаких претензий подобного толка нет.

Понятно что, какие тут могут быть претензии. :lol:

Nikita> *Можете завидовать :D

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

Nikita> Вы уж извините, но лично я серьёзными вещами занимаюсь, а не всякой понедельной ерундой.

Понятно-понятно. Похоже, мы наблюдаем тут Реконструктора v 2.0, улучшенная и исправленная версия. С первым было интересно, со вторым уже не смешно.
 13.0.782.10713.0.782.107
IL sxam #16.09.2011 08:33  @Сергей-4030#16.09.2011 00:47
+
-
edit
 

sxam

старожил

..
Nikita>> Вы уж извините, но я не разделяю Вашего поклонения мамоне. И не меряю людей по их доходам.
Сергей-4030> Понятно. То есть, работодатель не разделяет Вашего мнения о вашей ценности, ага? Знакомо.
..

Сергей, кончай троллить :)
Самая лучшая программисткая команда которую я когда-либо видел работает с нами из Праги и явно получает меньше израильской группы. Но их средний программист лучше нашего намного. Так что деньги тут не имеют отношения (уж точно не между странами).
 5.05.0
RU Nikita #16.09.2011 11:29  @Сергей-4030#16.09.2011 05:18
+
-
edit
 

Nikita

аксакал

Nikita> Компилятор не только создаёт - это-то и обычные макросы умеют. Он ещё выводит типы, constraint'ы проверяет, обеспечивает гарантии и т.д.
Сергей-4030> Ну да, делает все, что должен делать adapter.

Ерунду пишете. Адаптер не может типы выводить. Это Вы своей головой будете делать, и прописывать их ручками по всей цепочке. И если потом потребуется где-то в последовательности тип поменять, то Вам придётся повторить процесс полностью для всей лыжи. А сложность алгоритма вывода типов в том же C# отнюдь не линейная, например...

Сергей-4030> Понятно что, какие тут могут быть претензии. :lol:

Верно - служителям мамоны не постичь...

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

Приезжайте. У нас тут всегда нехватка персонала. Правда Вам придётся пройти собеседование со мной + ещё парой человек, которых лично я оцениваю выше себя :cool:

Сергей-4030> Понятно-понятно.

Что Вам понятно-то ? Вы ведь даже что такое Rx не знаете, наверняка.
Учитесь читать.  9.09.0

Nikita

аксакал

Mishka> Поэтому с выводимостью типов там ещё хуже, чем в C++ — смотри параметры в качестве генериков, к примеру.

Кстати, похоже Вы опять в терминологии путаетесь. "Вывод типов" это то что "type inference"...
Учитесь читать.  9.09.0

sxam

старожил

Никита опять принёз пользу - пару лет назад yield для меня открыл а теперь Rx - читаю, интересная штука.
 5.05.0
CA tarasv #16.09.2011 17:07  @Сергей-4030#16.09.2011 05:18
+
-
edit
 

tarasv

опытный

Nikita>> Компилятор не только создаёт - это-то и обычные макросы умеют. Он ещё выводит типы, constraint'ы проверяет, обеспечивает гарантии и т.д.
Сергей-4030> Ну да, делает все, что должен делать adapter. Но вы же говорили, что отличается?

Сергей не становись на позицию Реконструктора - ты шарп не очень знаешь, а Никита знает и его и жабу. И он прав, все кроме ОО в жабе достаточно убогое, потому что Гослинг разработал "С++, версия исправленная, для виртуальной машины" тоесть практически чистый ОО язык, остальные парадигмы програмирования в Java ну очень через одно место можно применять. И все попытки его существенно расширить особых результатов не дали. C C# картина другая. Если сначала он выглядел как Java от Микрософт то сейчас это уже реально синтетический и расширяемый язык, с нормальной поддержкой функционального и декларативного программирования.
 3.6.223.6.22

tarasv

опытный

Nikita> А с LINQ to SQL ваялись новые модули работы с БД.

А не боитесь что в один далеко не прекрасный момент такой метод поставит базу на бок по происзводительности, что уже неоднократно происходило с проектами использующими всякие ORM типа Hibernate?
 3.6.223.6.22
1 2 3 4 5 6 7

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru