C - -
От: remark Россия http://www.1024cores.net/
Дата: 07.07.08 19:33
Оценка: 37 (10) :)
Спасибо всем, ответившим в теме Что Вам мешает в С++?
Автор: remark
Дата: 21.06.08
. (оценки доставлю завтра, на сегодня лимит исчерпан ). Сделал агрегацию ответов. Формулировки непереформулировал собственными словами, но надеюсь, что смысл не потерян. Так же, для сокрашения числа пунктов, пришлось "сливать" похожие ответы, но опять же надеюсь, что смысл при этом сильно не потерялся. В скобках указан язык, в котором данная проблема решена. Порядок следующий — вверх вынес варианты, за которые высказалось больше всего людей, остальные — примерно в хронологическом порядке.

Длительное время компиляции, включение заголовочных файлов (Java)
eao197, merk, WolfHound, StevenIvanov, Sergey, Walter Bright, Alexander G, jazzer, IROV, Константин Л.

Сахара и фич в языке — делегатов, рефлексии, многопоточности и т.д (C#)
Аноним, StevenIvanov, alzt, jazzer, EyeOfHell, StevenIvanov, sergey_shandar, Tonal-

Сложность языка. Сложно найти "свободных" программистов высокого уровня (Eiffel)
eao197, StevenIvanov, alzt, ua1zcl, FR, gear nuke, Кодёнок

Библиотеки — слишком много, слишком разношёрстные (по стилю, качеству, требованиям и т.д.) (Java)
Roman Odaisky, eao197, alzt, ua1zcl, jazzer, Аноним

IDE — не до конца может совладать с языком (Java)
Roman Odaisky, eao197, jazzer, strcpy

Широкое применение метапрограммирования на шаблонах доведённое до абсурда (Java)
eao197, FR, Аноним

Слабые шаблоны (???)
jazzer, minorlogic

Манглинг имён, отсутствие ABI (Java)
StevenIvanov, ua1zcl, Alexander G

Макросы — рудимент (Java)
StevenIvanov, alzt, Walter Bright

Слишком слабые макросы (Nemerle)
jazzer, EyeOfHell

Плохая "кросс-платформенность" (между компиляторами, ОС, аппаратными платформами) (Java)
frogkiller, TheBeard, Кодёнок

Чрезмерная свобода в выборе стиля программирования (Java)
Аноним, LaptevVV

Совместимость с С (Java)
LaptevVV, ua1zcl

Недостаточная совместимость с С (ObjectiveC)
StevenIvanov

Ничего
den123

Отсутствие безопасного режима (Java)
eao197

Неразбериха с исключениями — кто-то использует, кто-то — нет; кто-то кидает одно, кто-то — другое (Java)
eao197

Невозможность локонично написать некоторые типовые паттерны кода (C#)
eao197

DLL-Hell (Java)
WolfHound

Отсутствие finally (Java)
Alexander G

Недостаточная типизация -> глупые ошибки (Java)
Alexander G

Невозможно быстро и удобно создавать GUI приложения (Delphi)
Alexander G

Сложная модель исполнения (точки следования и т.д) (Java)
Mr.Cat

Неэффективность new\delete для маленьких объектов (Java)
alzt

Ручное управление памятью (Java)
TheBeard

Статическая поддержка исключений (Java)
Pasternak



По существу списка тут комментировать наверное бесполезно, т.к. вопрос достаточно субьективный. Однако же можно выделить варианты, за которые проголосало более, допустим, 2 человек, что бы получить более информативную выборку:


Если посмотреть в контексте С++0х, то второй пункт С++0х более-менее решит. Хотя рефлексии не будет, и аттрибутов тоже похоже не будет. Зато забавно, что некоторые остальные пункты С++0х скорее ухудшит — сложность языка повысится, с разношёрстными библиотеками ситуация определенно не улучшится (представляются первые шаблонные библиотеки на основе концептов). Большинство же пунктов вообще не адресуется С++0х. Ну хотя это в прочем и не удивительно — с заголовочными файлами уже ничего не сделаешь, с ABI видимо уже тоже поздно что-то делать, макросы не уберёшь и т.д. Горбатого могила исправит
Мммм... что-то на такой ноте не хочется заканчивать пост... Но зато это — самый крутой язык


1024cores — all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re: C - -
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 07.07.08 20:18
Оценка:
Здравствуйте, remark, Вы писали:

R>Но зато это — самый крутой язык


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


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[2]: C - -
От: remark Россия http://www.1024cores.net/
Дата: 07.07.08 20:27
Оценка:
Здравствуйте, eao197, Вы писали:

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


R>>Но зато это — самый крутой язык


E>Имхо, это не правильный акцент. С++ не самый крутой язык (равно как и любой иной язык). Важно другое -- ты умеешь им пользоваться!


Ну не скажи, не крутой язык я бы не стал изучать, васик там какой-нибудь


1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re: C - -
От: merk Россия  
Дата: 07.07.08 21:23
Оценка: 1 (1) +1 -3 :)
Здравствуйте, remark, Вы писали:

R>Мммм... что-то на такой ноте не хочется заканчивать пост... Но зато это — самый крутой язык


1. никакой язык самостоятельной ценности не имеет. ценность имеет только то, насколько он способствует производству надежного, и хорошо сопровождаемого и эффективного ПО, с минимальными затратами разнообразных ресурсов, — человеческих, временных, финансовых. поскольку именно для этого язык и предназначен.
любить язык сам по себе — род фетишизма.
Re: C - -
От: Alexander G Украина  
Дата: 07.07.08 21:30
Оценка: 2 (2)
Кое-что С++0х таки адресует

Широкое применение метапрограммирования на шаблонах доведённое до абсурда


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

Сам код шаблонного метапрограммирования тоже не будет таким страшным. Переменноарные шаблоны и rvalue-ссылки помогут избежать копипаста — то, против чего шаблоны вроде как изначально боролись.

Что ещё могли бы пофиксить, так это

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

кстати, нужный лично мне finally я бы записал в этот сахар. Но тут видимо на принцип идут
Русский военный корабль идёт ко дну!
Re[2]: C - -
От: merk Россия  
Дата: 07.07.08 22:25
Оценка:
Здравствуйте, Alexander G, Вы писали:
AG>Не нужно будет иммитировать замыкания через бустовские костыли — средства для имитации замыканий будут встроены в язык.
можно подумать, это даст какие-то дополнительные возможности. и так уж, блин, концептуально необходимо.

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

насчет концептов пока ничего не скажу, но тезис о компиляторе, трудящемся над "десятком шаблонов" для получения факториала! его на асме можно получить за пять команд. не пугайте уже народ.

AG>Сам код шаблонного метапрограммирования тоже не будет таким страшным. Переменноарные шаблоны и rvalue-ссылки помогут избежать копипаста — то, против чего шаблоны вроде как изначально боролись.


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

AG>Что ещё могли бы пофиксить, так это

AG>Сахара и фич в языке — делегатов, рефлексии, многопоточности и т.д

кстати, нужный лично мне finally я бы записал в этот сахар. Но тут видимо на принцип идут

многопоточность они вообше не сформулируют в приемлемом виде. будут либо плохозакрытые дырки, либо ограничения, что станут устранять еще через три ревизии стандарта. как с rvalue.
Re[2]: C - -
От: remark Россия http://www.1024cores.net/
Дата: 07.07.08 22:35
Оценка:
Здравствуйте, Alexander G, Вы писали:

AG>Кое-что С++0х таки адресует

AG>

AG>Широкое применение метапрограммирования на шаблонах доведённое до абсурда


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


AG>Сам код шаблонного метапрограммирования тоже не будет таким страшным. Переменноарные шаблоны и rvalue-ссылки помогут избежать копипаста — то, против чего шаблоны вроде как изначально боролись.



Согласен. Об этом я не подумал.
Наверное в контексте данной теме это можно сформулировать следующим образом — больше вещей можно будет реализовать с помощью шаблонов не доходя до абсурда. Например, форвардинг параметров.


1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[3]: C - -
От: remark Россия http://www.1024cores.net/
Дата: 07.07.08 22:42
Оценка:
Здравствуйте, merk, Вы писали:

M>наконец найден метод от копипейста. вставить в компилятор еще сто кило кода. тогда как в редакторе кнопки копи и пейст останутся неторонутыми, а ведь копипейст идет именно оттуда.


Ты путаешь о чём идёт речь. Речь не идёт о получении 100% тождественного кода. Речь идёт о получении *почти* тождественного кода, или о генерации т.н. boilerplate кода, который может быть совершенно не идентичен в текстовом представлении.


1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[4]: C - -
От: merk Россия  
Дата: 07.07.08 22:53
Оценка: -3 :)
Здравствуйте, remark, Вы писали:

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


M>>наконец найден метод от копипейста. вставить в компилятор еще сто кило кода. тогда как в редакторе кнопки копи и пейст останутся неторонутыми, а ведь копипейст идет именно оттуда.


R>Ты путаешь о чём идёт речь. Речь не идёт о получении 100% тождественного кода. Речь идёт о получении *почти* тождественного кода, или о генерации т.н. boilerplate кода, который может быть совершенно не идентичен в текстовом представлении.


R>

ремарк, вы слишком увлеченно программируете на сипп, отчего говорите загадками, вместо ясного и чистого изложения.
если серьезно, не являются темплейты таким уж строго необходимым средством для разработки систем. да, они описывают родственные концепции не OOP языком, оттого их слабость очевидна. и могут генерить только близкородственные коды отличающиеся в небольших деталях.
Re[3]: C - -
От: remark Россия http://www.1024cores.net/
Дата: 07.07.08 22:58
Оценка:
Здравствуйте, merk, Вы писали:

M>многопоточность они вообше не сформулируют в приемлемом виде. будут либо плохозакрытые дырки, либо ограничения, что станут устранять еще через три ревизии стандарта. как с rvalue.


Конечно, не сформулируют. Зачем им будет её формулировать, да ещё в неприемлемом виде; если они уже её сформулировали, да ещё в виде лучше, чем сейчас есть в любом другом языке?
merk, как всегда, жжот


1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[4]: C - -
От: merk Россия  
Дата: 07.07.08 23:05
Оценка: -2 :))
Здравствуйте, remark, Вы писали:

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


M>>многопоточность они вообше не сформулируют в приемлемом виде. будут либо плохозакрытые дырки, либо ограничения, что станут устранять еще через три ревизии стандарта. как с rvalue.


R>Конечно, не сформулируют. Зачем им будет её формулировать, да ещё в неприемлемом виде; если они уже её сформулировали, да ещё в виде лучше, чем сейчас есть в любом другом языке?

R>merk, как всегда, жжот
а причем тут языки? многопоточность формулируется обычно на уровне системной библиотеки(что как раз верно), поскольку является
1. гибким решением, поскольку к самой проблеме можно подойти по разному.
2. не ограничено компилятором и синтаксисом конкретного языка
3. многопоточность должна быть частью содержать eventdriven концепта и обязательно иметь таймауты в операциях.
4. многопоточность завязана на ее реализацию в ос. или они будут ее делать платформенно-независимой? а если ось как платформа не соотвуствует взглядам с++ на многопоточность...а? криво-отображать, авось как-нить зашевелится?
Re[3]: C - -
От: gear nuke  
Дата: 08.07.08 01:38
Оценка: :)
Здравствуйте, merk, Вы писали:

M>насчет концептов пока ничего не скажу, но тезис о компиляторе, трудящемся над "десятком шаблонов" для получения факториала! его на асме можно получить за пять команд.


"На асме" тоже можно за 0 команд факториал получить если не путать runtime и copmiletime...

M>не пугайте уже народ.
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Re: C - -
От: jazzer Россия Skype: enerjazzer
Дата: 08.07.08 02:23
Оценка: 14 (1) :))
Здравствуйте, remark, Вы писали:

R>с заголовочными файлами уже ничего не сделаешь, с ABI видимо уже тоже поздно что-то делать, макросы не уберёшь и т.д. Горбатого могила исправит


- Мы сами знаем, что она не имеет решения, — сказал Хунта,
немедленно ощетиниваясь.— Мы хотим знать, как ее решать.


jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re: C - -
От: sergey_shandar США http://getboost.codeplex.com/
Дата: 08.07.08 02:57
Оценка: +1
Здравствуйте, remark, Вы писали:

R>Спасибо всем, ответившим в теме Что Вам мешает в С++?
Автор: remark
Дата: 21.06.08
. (оценки доставлю завтра, на сегодня лимит исчерпан ). Сделал агрегацию ответов. Формулировки непереформулировал собственными словами, но надеюсь, что смысл не потерян. Так же, для сокрашения числа пунктов, пришлось "сливать" похожие ответы, но опять же надеюсь, что смысл при этом сильно не потерялся. В скобках указан язык, в котором данная проблема решена. Порядок следующий — вверх вынес варианты, за которые высказалось больше всего людей, остальные — примерно в хронологическом порядке.


R>[q]

R>Длительное время компиляции, включение заголовочных файлов (Java)
R>eao197, merk, WolfHound, StevenIvanov, Sergey, Walter Bright, Alexander G, jazzer, IROV, Константин Л.

R>Сахара и фич в языке — делегатов, рефлексии, многопоточности и т.д (C#)

R>Аноним, StevenIvanov, alzt, jazzer, EyeOfHell, StevenIvanov, sergey_shandar, Tonal-

Эээ... я говорил о CTTI которого нет в C# и говорил что не нужен RTTI, который есть в C# . Как раз CTTI никакого отоношения к языкам типа Java, C# не имеет. Я бы выделил это отдельной веткой, так как это не сахар (без которого можно обходиться), а скорее реальный недостаток языка (без которого очень трудно).
getboost.codeplex.com
citylizard.codeplex.com
ctti sugar rtti
Re[5]: C - -
От: igna Россия  
Дата: 08.07.08 05:04
Оценка:
Здравствуйте, merk, Вы писали:

M>ремарк, вы слишком увлеченно программируете на сипп, отчего говорите загадками, вместо ясного и чистого изложения.

M>если серьезно, не являются темплейты таким уж строго необходимым средством для разработки систем. да, они описывают родственные концепции не OOP языком, оттого их слабость очевидна.

Без шаблонов полиморфизм заканчивается на первом аргументе. (По крайней мере пока в C++ не добавили multiple dispatch.) И дело не в каких-то фунциях вычисляющих пересечение или что там еще в качестве примера обычно приводят. Просто сравнение на равенство, ведь и смех, и грех, какие приплясывания нужны, чтобы корректно определить его в OOP.
Re: новый язык программирования
От: x-code  
Дата: 08.07.08 06:24
Оценка: :)
Здравствуйте, remark, Вы писали:

R>

Согласен со всеми пунктами! Тут даже добавить нечего
А как думаете, возможно создание нового языка программирования, который бы был совместим с С++ на уровне проектов? Т.е. например в Visual Studio встраивается некий аддин, и в С++ проектах появляется возможность добавлять файлы на новом ЯП. Программисты скачивают аддин, пробуют добавить в свои проекты файлы на новом языке (которые компилятся новым компилятором в совместимый с С++ объектный файл), радуются новым возможностям и постепенно переводят все свои проекты полностью на новый язык. ИМХО, этот подход, в отличие от подхода D, вполне реальный.
Re[3]: C - -
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 08.07.08 07:47
Оценка: 14 (1) +4
Здравствуйте, remark, Вы писали:

R>>>Но зато это — самый крутой язык


E>>Имхо, это не правильный акцент. С++ не самый крутой язык (равно как и любой иной язык). Важно другое -- ты умеешь им пользоваться!


R>Ну не скажи, не крутой язык я бы не стал изучать, васик там какой-нибудь


Э-э-э... Я о другом хотел сказать. Любой инструмент должен "лежать в руке" как родной. И пользоваться инструментом нужно не задумываясь о мелких деталях (это как в единоборствах, когда человека заставляют оттачивать технику движений до такого уровня, чтобы в нужный момент человек не задумывался как он будет что-то делать -- в этот момент движениями управляют приобретенные рефлексы и инстинкты).

Именно поэтому "знание языка" и "владение языком" -- совершенно разные вещи. Можно изучить язык за какое-то ограниченное время, но овладевать им придется гораздо дольше. До тех пор, пока не научишься думать на этом языке. По отношению к С++ у тебя этот момент давно наступил

Владение языком должно приводить, по идее, к двум результатам:

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

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

К сожалению, оба эти результата наблюдаются достаточно редко.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re: C - -
От: Critical Error ICQ: 123736611
Дата: 08.07.08 08:15
Оценка: :)
Эмм... а можно полюбопытствовать, зачем весь этот опрос? Никак надумал свой язык написать? Когда можно будет ждать тему с названием "[ANN] C-- alpha"? Бороду уже отрастил?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: C - -
От: StevenIvanov США  
Дата: 08.07.08 08:46
Оценка:
Здравствуйте, Critical Error, Вы писали:

CE>Эмм... а можно полюбопытствовать, зачем весь этот опрос? Никак надумал свой язык написать? Когда можно будет ждать тему с названием "[ANN] C-- alpha"? Бороду уже отрастил?


Вообще-то уже есть такой зверюго
Re[3]: C - -
От: Critical Error ICQ: 123736611
Дата: 08.07.08 09:06
Оценка:
Здравствуйте, StevenIvanov, Вы писали:

SI>Вообще-то уже есть такой зверюго


Он еще есть? оО Я думал он уже давно помер...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.