yosefk ([info]yosefk) wrote in [info]ru_programming,

C++ FQA Lite

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

А между тем было бы хорошо убедить людей не начинать новых проектов на С++. Вот я и написал C++ FQA Lite. FQA есть Frequently Questioned Answers; там приводятся вопросы и ответы из C++ FAQ Lite, а также технические подробности, о которых FAQ умалчивает или же, как бы это помягче, сообщает не то, что есть на самом деле.

FQA, как и FAQ, большой, и выдержать столько C++ зараз нормальному человеку не под силу - FQA расчитан на "пробежку" по интересующим вопросам. "Линейно" читабельные секции:

Defective C++ - про технические проблемы
Big Picture Issues - про контраст между мыслью из FAQ'а о том, что "C++ is a solid, mature, mainstream tool, good from an overall business perspective" и суровой действительностью.

UPDATE: Характер общения здесь и на reddit.com привел меня к решению обсуждать FQA по мейлу, поэтому на комментарии я больше не отвечаю. Спасибо всем, кто выступает здесь или где-либо на стороне FQA, помогая наблюдателям, особенно неопытным, полнее увидеть картину отношения программистов к С++. Я со своей стороны интересуюсь аргументированной критикой как С++, так и С++ FQA, и собираюсь публиковать и то, и другое с указанием авторства. Мейл гораздо больше подходит для сбора такого материала, чем комментарии.

Ответы на наиболее часто встречающиеся вопросы и утверждения - здесь.

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    Your IP address will be recorded 

  • 282 comments
Previous
← Ctrl← Alt
  • 1
  • 2
Next
Ctrl →Alt →

[info]ex_ex_zhuzh

October 23 2007, 22:27:29 UTC 4 years ago

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

[info]alexclear

October 23 2007, 23:03:51 UTC 4 years ago

По делу, как я понимаю, замечаний нет?

[info]9000

4 years ago

[info]yosefk

4 years ago

[info]alexclear

4 years ago

[info]dair_spb

4 years ago

[info]blacklion

4 years ago

[info]yosefk

4 years ago

[info]blacklion

4 years ago

[info]yba

4 years ago

[info]blacklion

4 years ago

[info]yba

4 years ago

[info]blacklion

4 years ago

[info]yosefk

4 years ago

[info]alexclear

4 years ago

[info]yosefk

4 years ago

[info]hegan_gray

October 23 2007, 22:57:56 UTC 4 years ago

Код на C++ вполне съедобен и даже бывает вкусен и очень красив. Вы просто не даёте себе труда поработать как следует мозгом, а хотите всё попроще. Пишите тогда на VB, и не лезте к людям с Вашей нелюбовью к C++.

[info]alexclear

October 23 2007, 23:05:58 UTC 4 years ago

Вы здесь хотя бы один пункт прочитали, прежде чем оставить комментарий?
Или очень красивый код на C++ превращает грамматику C++ в контекстно-свободную?
Магия!

[info]hegan_gray

4 years ago

[info]alf_kadett

4 years ago

[info]alexclear

4 years ago

[info]alf_kadett

4 years ago

[info]hegan_gray

4 years ago

[info]alexclear

4 years ago

[info]hegan_gray

4 years ago

[info]alf_kadett

4 years ago

[info]alexclear

4 years ago

[info]alf_kadett

4 years ago

[info]max630

4 years ago

[info]pzz

4 years ago

[info]yosefk

4 years ago

[info]alexclear

4 years ago

[info]hegan_gray

4 years ago

[info]alexclear

4 years ago

[info]hegan_gray

4 years ago

[info]alexclear

4 years ago

[info]hegan_gray

4 years ago

[info]alexclear

4 years ago

[info]hegan_gray

4 years ago

[info]levgem

4 years ago

[info]hegan_gray

4 years ago

[info]levgem

4 years ago

[info]hegan_gray

4 years ago

[info]blacklion

4 years ago

[info]hegan_gray

4 years ago

[info]blacklion

4 years ago

[info]hegan_gray

4 years ago

[info]_alien_

4 years ago

[info]tozhe_skazo4nik

October 23 2007, 23:41:35 UTC 4 years ago

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

Например, я многое прощал C++Builder, пока единственной ему альтернативой был MFC. С появлением QT и в особенности Ultimate++, я с радостью пересел на них и доволен по многим пунктам.
Критика является важной частью поступательного развития в качестве создания базы, на которой формируется следующий скачок прогресса. Просто я был бы благодарен, если бы вы развили свою мысль в сторону конкретных предложений (модификация языка, либо предложение альтернатив).

[info]9000

October 23 2007, 23:49:17 UTC 4 years ago

Попробуйте сформулировать, чем вас не устраивают C#/Java с одной стороны и чистый C с другой.
Взгляните, опять же, на D (если ещё не).
А если на то пошло, то haskell или erlang на некоторых классах весьма практических задач любому C++ фору дадут.

[info]yosefk

4 years ago

[info]yosefk

4 years ago

[info]pzz

4 years ago

[info]pzz

4 years ago

[info]pzz

4 years ago

[info]pzz

4 years ago

[info]pzz

4 years ago

[info]pzz

4 years ago

[info]pzz

4 years ago

[info]pzz

4 years ago

[info]madfire

4 years ago

[info]pzz

4 years ago

[info]yosefk

4 years ago

[info]yba

4 years ago

[info]yosefk

4 years ago

[info]yba

4 years ago

[info]yosefk

4 years ago

[info]max630

4 years ago

[info]pzz

4 years ago

[info]max630

4 years ago

[info]pzz

4 years ago

[info]max630

4 years ago

[info]pzz

4 years ago

[info]max630

4 years ago

[info]yba

4 years ago

[info]pzz

4 years ago

[info]madfire

4 years ago

[info]yosefk

4 years ago

[info]yosefk

4 years ago

[info]yosefk

4 years ago

[info]cmm

4 years ago

[info]cmm

4 years ago

[info]cmm

4 years ago

[info]cmm

4 years ago

[info]cmm

4 years ago

[info]cmm

4 years ago

[info]yosefk

4 years ago

[info]cmm

4 years ago

[info]cmm

4 years ago

[info]cmm

4 years ago

[info]cmm

4 years ago

[info]cmm

4 years ago

[info]ak_47

4 years ago

[info]cmm

4 years ago

[info]yosefk

4 years ago

[info]yosefk

4 years ago

[info]earwin

October 23 2007, 23:54:49 UTC 4 years ago

makes me feel warm and fuzzy

[info]yosefk

October 24 2007, 11:04:48 UTC 4 years ago

Типа спасибо (с) Масяня

[info]antonyc

October 24 2007, 00:56:15 UTC 4 years ago

ндя. что к чему. мало того, что у вас ошибки в посте, так еще и тема гавно

[info]antonyc

October 24 2007, 00:59:30 UTC 4 years ago

это я про отсутствие альтернатив

[info]yosefk

4 years ago

[info]max630

October 24 2007, 03:01:38 UTC 4 years ago

> This sort of code doesn't really work because it requires all relevant overloads of operator<< to be visible before the point where ObjImpl is defined

это гон. при определении шаблона иметь operator<< не надо. надо при инстанциировании, а это уже не в хедере.

[info]yosefk

October 24 2007, 10:07:30 UTC 4 years ago

Какому компилятору вы доверяете?

gcc 4 с вами не согласен:

//try.cpp
#include
using namespace std;

template
void f(const T& x)
{
  cout << "default f: " << x << endl;
}

#ifdef VISIBLE_BEFORE_POINT_OF_DEF
void f(const int& x) { cout << "non-default f (defined before user_func() definition): " << x << endl; }
#endif

template
void user_func(const T& x)
{
  f(x);
}

#ifndef VISIBLE_BEFORE_POINT_OF_DEF
void f(const int& x) { cout << "non-default f (defined before user_func() call): " << x << endl; }
#endif

int main()
{
  user_func(5);
}


Результат:

$ g++ -o try try.cpp
$ ~/work/VMP_SDK/VMP> ./try
default f: 5
$ g++ -o try try.cpp -DVISIBLE_BEFORE_POINT_OF_DEF
$ ./try
non-default f (defined before user_func() definition): 5


А вот gcc 3 (более старый и менее стандартный) двумя руками за вас:

$ g++ -o try try.cpp
$ ./try
non-default f (defined before user_func() call): 5
$ g++ -o try try.cpp -DVISIBLE_BEFORE_POINT_OF_DEF
$./try
non-default f (defined before user_func() definition): 5


В обоих случаях он нашел f(int). Честь ему и хвала. Когда вы будете портировать ваш код, испещренный кучей темплэйтов на новый компилятор, вы не раз помянете толерантный gcc 3 добрым словом.

[info]max630

4 years ago

[info]max630

4 years ago

[info]yosefk

4 years ago

[info]max630

4 years ago

[info]yosefk

4 years ago

[info]max630

4 years ago

[info]yosefk

4 years ago

[info]max630

4 years ago

[info]max630

4 years ago

[info]max630

October 24 2007, 03:56:34 UTC 4 years ago

в последнем пункте вообще бред какой-то написан.

[info]yosefk

October 24 2007, 10:08:31 UTC 4 years ago

Главное, что не гон.

[info]panchul

October 24 2007, 05:34:52 UTC 4 years ago

Черт побери, хороший текст (говорю как основатель компиляторной компании, автор нескольких компиляторов, и как человек, использующий C++ с 1992-го года).

[info]yosefk

October 24 2007, 09:36:28 UTC 4 years ago

Спасибо!

EDA? Здорово! Synopsys сегодня продает ваш продукт?

А у Denali мы DDR2 controller закупаем...

Я писал компилятор для hardware description language собственного сочинения, но для внутреннего пользования, и без синтезирования/генерации RTL. То есть без оптимизации и без поддержки существующих стандартов - no-brainer, так сказать. Но инженер, который его юзал, положил болт на ранее написанный им код на SystemC. Он не мог понять, откуда столько operator<< берется в сообщениях об ошибках. Это было как раз тогда, когда я неожиданно для самого себя начал подозревать, что без C++ работается гораздо быстрее.

[info]aensidhe

October 24 2007, 05:42:24 UTC 4 years ago

На С++ написано и сдано достаточное количество проектов.

Альтернатив ему нет.

[info]blacklion

October 24 2007, 06:58:49 UTC 4 years ago

На МТВ раскручено и окуплено достаточное количество проектов.

Альтернатив попсе нет.

[info]alexclear

4 years ago

[info]yosefk

4 years ago

[info]kastaneda

4 years ago

[info]alexclear

4 years ago

[info]kastaneda

4 years ago

[info]yosefk

4 years ago

[info]ygam

October 24 2007, 05:44:22 UTC 4 years ago

Спасибо!

Мне еще нравится вот что.

[info]yosefk

October 24 2007, 09:49:15 UTC 4 years ago

Какого хрена это компилируется?! Там что, конструктор от int/char, и он не explicit?

Когда-то давно я пытался заставить класс, который представлял fixed point numbers, заставить тихо каститься в float, но не int. explicit-конструкторы есть, а вот кастов - нет! Кончилось тем, что я сделал отдельные операторы каста в int, а внутри - static assert какой-то.

[info]ygam

4 years ago

[info]yba

4 years ago

[info]yosefk

4 years ago

[info]ttopbot30

October 24 2007, 05:50:13 UTC 4 years ago

Вы попали в top30 на яндексе самых обсуждаемых тем в блогосфере. Поэтому копия вашего поста доступна в ленте по ссылке
Почитать текст со всеми комментариями можно тут
Это Ваш 2-й ТОПовый пост за последний год. Посмотреть статистику автора можно тут.
Этот "бот не имеет отношения к Яндексу" © НадежныйИсточник

[info]ex_ex_mrako

October 24 2007, 06:54:48 UTC 4 years ago

а почем уна английском?

[info]yosefk

October 24 2007, 08:57:03 UTC 4 years ago

1. Потому же, почему приходится писать на С++ :) - по-английски говорят почти все программисты.
2. Русский перевод FAQ-а неполный, а там линки на FAQ и пересказы его ответов.
3. Вставлять в русский текст "шаблон"/"темплейт"/"template", конечно, можно, но если текст все время упоминает такие понятия, это начинает надоедать.

[info]graynm

October 24 2007, 08:24:10 UTC 4 years ago

Во-первых, FQA сильно необъективен. Очевидно, что пишущий(е): а) фанатеет от managed платформ, б) очень сильно хочет "похоронить" С++ - ясное дело, что при желании и до столба докопаться можно. По многим пунктам претензии являются просто придирками, особенно в Big Picture Issues.

Во-вторых, не нравится - не кушай.

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

[info]yosefk

October 24 2007, 08:52:43 UTC 4 years ago

Во-первых, конечно, я необъективен, но, по-моему, я все же ближе к объективности, чем С++ FAQ и многое другое, написанное о С++. Я говорю не об интонации, а об информации. Кроме того, я (а) немало работаю в real time, где managed code - нереальный вариант, и поэтому довольно хорошо знаю, чего стоит отладить unmanaged code, над которым работают человек 40, и считаю, что managed code (Python/Ruby/Java/C#/Lisp) - это отлично, когда это можно себе позволить и (б) спорить по поводу разницы между "претензиями" и "придирками" считаю безнадежным.

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

В-третьих, язык - это не совсем инструмент. Не говорить по-английски, конечно, можно, но затруднительно - network effects. В этом смысле grep - инструмент, а Linux - язык/инфраструктура/как угодно можно называть, но не совсем инструмент. Поэтому "не кушать" С++ часто требует отказаться от участия в хорошем проекте. Хотелось бы не делать этот выбор.

[info]graynm

4 years ago

[info]gds

4 years ago

[info]yosefk

4 years ago

[info]graynm

4 years ago

[info]yosefk

4 years ago

[info]graynm

4 years ago

[info]yosefk

4 years ago

[info]graynm

4 years ago

[info]madfire

4 years ago

[info]arbinada

October 24 2007, 08:50:34 UTC 4 years ago

Интересная, подробная, хотя и несколько запоздавшая констатация факта: уход С++ в ниши.
Я об этом давно писал.
http://arbinada.com/main/node/85

[info]yosefk

October 24 2007, 14:53:09 UTC 4 years ago

Я не констатировал подобного факта. Я был бы рад констатировать его, если бы он фактом был.

Например, очень много ПО пишется для embedded systems. Большая часть сетевых обсуждений ПО касается исключительно IT. В embedded С++ только начинает теснить С, и может пройти очень много времени, пока С начнет восстанавливать позиции.

Но дело не в прогнозах. На С++ пишет больше трех миллионов человек. Многие не пробовали писать на других языках. Они принимают проблемы С++ как неизбежные проблемы программирования как такового. FQA я писал, чтобы убедить их в обратном, или, на худой конец, развлечь их коллег, которым приходится иметь дело с их системами. Тренды меня не интересуют.

[info]arbinada

4 years ago

[info]plumqqz

October 24 2007, 11:21:55 UTC 4 years ago

Все правильно

Почитал я в свое время про C++ (шаблонов тогда еще не было) и подумал - да идите-ка вы в уй с таким мутным языком. С тех пор дел с ним не имел, чем и доволен.

[info]yosefk

October 24 2007, 12:01:57 UTC 4 years ago

Re: Все правильно

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

А С++ без темплейтов - это просто сказка :) Темплейты - это и потрясающая скорость компиляции, и отличные сообщения об ошибках, и зверские осложниния с overload resolution, и невозможность парсить код...

Deleted comment

[info]plumqqz

3 years ago

[info]trurle

October 24 2007, 12:09:57 UTC 4 years ago

Выпей иаду!

Аффтар! Убей сибя ап стену!

[info]top_top_bot30

October 24 2007, 13:43:22 UTC 4 years ago

Вы попали в top30 на яндексе самых обсуждаемых тем в блогосфере. Поэтому сейчас сюда полезет унылое говно.
Расслабтесь и наслаждайтесь.
Этот "бот не имеет отношения к унылому говну" © Инквизиция

[info]squadette

October 24 2007, 14:39:17 UTC 4 years ago

отличный текст "Defective C++"

только Вы там часто пишете "it's" вместо "its"

"it's" -- это просто аббревиатура для "it is"

"its" -- это "его (вещь), её (вещь)"

[info]yosefk

October 24 2007, 14:46:02 UTC 4 years ago

Спасибо!

И еще раз спасибо. Теоретически я это знаю, а практически как бы и нет...

[info]pzz

October 25 2007, 13:45:40 UTC 4 years ago

Я бы не очень, на самом деле, переживал по поводу скорости компиляции. Это, в конце концов, лечится (по крайней мере, теоретически) заменой компилятора, процессора, памяти, материнской платы, винчестера, блока питания, настольной лампы и т.п.

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

[info]yosefk

October 25 2007, 13:55:01 UTC 4 years ago

Как сказал я, "different people are hit the hardest by different problems" :)

Я согласен насчет головы и времени. Важность скорости компиляции варьируется от проекта к проекту. Однако вылечить проблемы скорости компиляции заменой чего-либо, кроме языка, в данном случае маловероятно. Скорость компиляции С++ обуславливается объективной сложностью его грамматики и #include files, а частота рекомпиляции - теми же #include files и способом определения private data. Современные компиляторы, бегущие на очень хороших машинах, компилируют С++ медленно, и довести любой из них до internal compiler error довольно легко. То, что не изменилось за 30 лет, несмотря на финансовую заинтересованность тысяч преуспевающих организаций, вряд ли изменится теперь.

[info]constb

October 26 2007, 07:56:41 UTC 4 years ago

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

должен отдельно прокомментировать проблему, описываемую в пунктах 11.5-11.8. непонятно почему автор исходного faq об этом не пишет, но оно решается элементарно с помощью std::auto_ptr. он может быть и NULL и может удалить объект тогда когда хочет разработчик, а не только когда он goes out of scope. и никаких ручных вызовов деструктора и placement new.

ещё мне кажется, вы в тексте используете многовато эмоциональных слов, словно anti-C++ evangelist какой-то, честное слово. :) вроде всё по делу, но букв таки многовато.

насчёт инструментария, помогающего сопровождать разработку, вы правы - Visual Assist для студии, несмотря на годы разработки и невероятные способности по разбору сложнейших ситуаций, до сих пор спотыкается об тот же boost. по сравнению с resharper для с#, который с самых первых версий без проблем обеспечивает нормальный code completion и refactoring, это наводит на печальные размышления.

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

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

[info]yosefk

October 26 2007, 08:43:16 UTC 4 years ago

"...а на самом деле - лишь потому что я работаю над малыми проектами..."

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

"...оно решается элементарно с помощью std::auto_ptr"

В принципе решается, за счет new/malloc. Некоторые не любят лишних malloc-ов, и С++ в целом очень старательно их избегает (сует private в headers, например). Так что инерцию программистов можно понять, хотя на самом деле malloc - это далеко не так страшно. Еще прикол - точки на стрелки заменять, когда поймешь, что нужен std::auto_ptr. Но это мелочи, как и сами вопросы. Я про них и писал-то для полноты картины, так сказать...

"ещё мне кажется, вы в тексте используете многовато эмоциональных слов..."

Дело в том, что люди и так могут заснуть, а если бы я писал в стиле, скажем, Страуструпа - холодная объективность, придаточные предложения и миллион оговорок - то 99 человек из 100 упали бы через 5-10 минут. Кроме того, сам FAQ весьма эмоционален, а я с ним вроде как дискутирую, так что мне можно :)

"насчёт инструментария, помогающего сопровождать разработку, вы правы"

ООО! Особенно здорово в дебаггере ковыряться в этих объектах, или рефакторинг делать.

"единственный пожалуй случай, когда мегавозможности с++ действительно оказываются полезны - это как раз таки code obfuscation."

Честно говоря, я в шоке - не думал, что кто-то использует С++ по назначению :)

"спасибо за текст"

Спасибо за ответ! Тем более тут во многих саб-трэдах небогато.

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

А писать по-русски про шаблоны, строки, массивы и исключения - печальная штука.

[info]constb

4 years ago

[info]yosefk

4 years ago

[info]constb

4 years ago

[info]yosefk

4 years ago

[info]constb

4 years ago

[info]lazyreader

October 26 2007, 11:54:38 UTC 4 years ago

Многое, конечно, спорно, многое просто неверно, многое прямо в точку (вот хоть 10.9).

Кстати, совет/просьба. Поскольку документ, я так понимаю, вы составили в дискуссионных целях (и даже закинули в c.l.c++.m.), было бы неплохо снабдить его параграфы, для облегчения ссылок, якорями. Типа http://blablabla.com/fqa#10.9.

[info]yosefk

October 26 2007, 13:35:41 UTC 4 years ago

Что именно неверно? Я охотно исправлю. "Спорно" - это более спорно :) Но можно и про него поспорить, так что опять же - что именно?

10.9 - это действительно очень печальное явление.

А якоря есть, например: http://yosefk.com/c++fqa/ctors.html#fqa-10.9

В каждой секции сверху есть оглавление, и если нажать на линки, то в адрес-баре браузера и будет якорь.

[info]lazyreader

4 years ago

[info]yosefk

4 years ago

[info]lazyreader

4 years ago

[info]yosefk

4 years ago

[info]lazyreader

4 years ago

[info]yosefk

4 years ago

[info]zamotivator

October 26 2007, 15:09:13 UTC 4 years ago

Пока не создадут языка который соединит в себе мощь ООП/ФП и перфоманс С - С++ будет жить.
И чем ругаться на "плохой" язык лучше его освоить.

[info]yosefk

October 26 2007, 17:02:09 UTC 4 years ago

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

Поддержка объектно-ориентированного программирования в С++" - та самая хорошая фиксация, которая заменяет анестезию.
Если ФП есть функциональное программирование - то тут дело еще хуже (сравните поддержку и того, и другого с D, например). Насчет скорости пробега - C и D бегут довольно резво, а программы на С++ тратят немало времени на копирование строк из одного класса в другой (есть еще char*, это тоже кончается копированием). К сожалению, многие люди думают, что скорость пробега им важна, но никогда ее не измеряют. Однако у меня нет достаточных причин предполагать, что вы из их числа.

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

[info]yuridichesky

October 26 2007, 15:25:25 UTC 4 years ago

Спасибо, в мемо.

[info]yosefk

October 26 2007, 17:06:15 UTC 4 years ago

И вам спасибо! А про невозможность существования - это смешно. Зафрендил.

[info]mejedi

October 26 2007, 21:48:42 UTC 4 years ago

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

[info]yosefk

October 26 2007, 22:39:06 UTC 4 years ago

Спасибо!

Есть немало людей, которые все это очень хорошо знают, просто облом писать про такие вещи - человек уже сам все понял, зачем описывать запах дыни тому, кто всю жизнь жевал сапожные шнурки (с) Шкловский/Довлатов, особенно если он еще предлагает выпить яду или еще чего-нибудь дельное? Я и сам много раз хотел бросить это дело.

В связи с обилием реакций, через несколько часов должны быть готовы мега-баннеры для линкования к FQA. Буду благодарен за их юзанье (или просто линк)...

[info]jtootf

October 27 2007, 01:13:29 UTC 4 years ago

прочитал Ваш FQA, всё же решусь высказаться. если будет у Вас желание подискутировать предметно - отвечайте на этот коммент; в противном случае можете его просто удалить. C++ как язык имеет свою вполне определённую нишу, и в рамках этой ниши конкурентов у него нет. managed code, псевдопереносимые виртуальные машины с обьектно-ориентированными языками имеют очень мало областей применения, практически исключительно в enterprise (да и там они, в общем-то, лишние); скриптовые (динамические) языки с компактными интерпретаторами ещё более специализированы, и подходят прежде всего для middleware и DSL задач; фукнциональные языки выигрывают в выразительности исключительно при отсутствии жёстких требований к производительности; серьёзными мультипарадигменными языками общего назначения в наше время не пользуется почти никто. C, который Вы постоянно приводите в обсуждении в качество более удобного инструмента, страдает куда большей подверженностью к run-time ошибкам. я с радостью жертвую временем компиляции ради того, чтобы получить модель "если собралось - значит будет работать, причём правильно. иначе - не соберётся". да, я сам активно использую связку с динамическим языком (прежде всего Tcl с его "чистым" интерпретатором и мощной поддержкой метапрограммирования); да, я активно учу функциональное программирование, и могу судить об убогости системы типов и негибкости C++; да, мне приходится использовать много собственных костылей к языку во время работы. но тем не менее - при использовании одноязыковой модели разработки, C++ - лучшее, что есть. расхваливаемый Вами D имеет как преимущества над C++, так и недостатки по сравнению с ним. куда интересней было бы упомянуть Eiffel, Oberon, или язык Ада. дополнение по существу - посмотрите исходники fftw или gnuplot. это чистый C. посмотрите Blitz++ и то, что с его помощью можно делать. это чистый C++. и то и другое - числодробилки, тут ни один из предложенных Вами подходов не срабатывает. а сравнение выразительности никак не в пользу C...
кстати, советую посмотреть на BitC, nesC, и Cyclone - раз уж Вы рассматриваете альтернативы. и на проект L4Ka::Pistachio тоже посмотрите, если считаете, что на C++ нельзя писать мощно и элегантно. а ещё выскажите свои мысли в Edison Design Group - они знают, каково это - делать компилятор C++. посмотрите C++0x - создаётся впечатление, что Вы о нём и не слышали, хотя 2009 год уже скоро. сравните важность введения в язык рефлекшна о котором вы столько пишете, и концепций, о которых молчите...
по сути Ваш FQA - констатация собственного бессилия. да, C++ язык сложный; да, хорошо на нём писать научится очень непросто, это требует времени и упорства. Вы сдались, пошли более простым путём. это Ваше право. но знайте - Вы всё же потеряли на этом один из инструментов в собственном арсенале

[info]yosefk

October 27 2007, 20:54:40 UTC 4 years ago

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

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

[info]jtootf

4 years ago

[info]yosefk

4 years ago

[info]yosefk

4 years ago

[info]cmm

4 years ago

[info]jtootf

4 years ago

[info]jtootf

4 years ago

[info]jtootf

4 years ago

[info]jtootf

4 years ago

[info]jtootf

4 years ago

[info]jtootf

4 years ago

[info]jtootf

4 years ago

[info]jtootf

4 years ago

[info]jtootf

4 years ago

[info]jtootf

4 years ago

[info]jtootf

3 years ago

[info]lazyreader

3 years ago

[info]jtootf

4 years ago

[info]jtootf

4 years ago

[info]ltwood

4 years ago

[info]jtootf

4 years ago

[info]dark_aurel

4 years ago

[info]ltwood

4 years ago

Previous
← Ctrl← Alt
  • 1
  • 2
Next
Ctrl →Alt →
Create an Account
Forgot your login or password?
Facebook Twitter More login options
English • Español • Deutsch • Русский…