опять об c++ (программистское)

Jun 23, 2010 23:50

Линус в очередной раз сказал, что думает о C++. Вот длинная цитата, но вообще-то стоит все прочитать.One of the absolute worst features of C++ is how it makes a lot of things so context-dependent - which just means that when you look at the code, a local view simply seldom gives enough context to know what is going on ( Read more... )

Leave a comment

Comments 50

dimrub June 23 2010, 21:07:02 UTC
Я всего лишь вышел из функции, что может быть проще, написал }, а в рантайме на самом деле пошли плясать деструкторы всех автоматических объектов в этой функции.

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

Reply

mopexod June 24 2010, 12:16:15 UTC
А какой красивый паттерн пропал - из всех мест функции вместо return - goto end;

Я просто люблю goto. Хотя и деструкторы на } - тоже люблю.

Reply

faceted_jacinth June 25 2010, 19:31:42 UTC
> А какой красивый паттерн пропал - из всех мест функции вместо return - goto end;

Совершенно ничего красивого в нём нет, как легко обнаружить, если начать его повсеместно использовать. Во-первых, в результате появляется совершенно отдельная переменная result. Которая там, в end, проверяется. Во-вторых, упаси вас Бог присвоить её где-нибудь, кроме как непосредственно перед каждым из goto end или самим end: потому что если это например какой-нибудь указатель на свежевыделенную память, то в случае ошибки её надобно освободить же, тогда как в случае успешного завершения -- ни в коем случае не надо. Так что выбирайте между tmp_result + result или result + success.

Reply

mopexod June 26 2010, 09:05:22 UTC
Ну, не надо же все так серьезно воспринимать :)

Reply


strangeraven June 23 2010, 21:14:19 UTC
C++ по сути не просто язык программирования, а среда для создания множества диалектов.
Хороший стиль C++ - это программирование на одном из его осознанно выбранных диалектов.
Ну например, отказаться от исключений, виртуальных функций, т.п., и писать на "C с классами". По сути это портативный ассемблер и есть. Вполне себе диалект.

Если известно, на каком диалекте написана программа, то локальность и простота обеспечивается.

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

Reply


nevsky June 23 2010, 21:17:03 UTC
> ...два разных смысла слова 'лучше'. Об этом как-нибудь в другой раз.

Ах, на самом интересном месте!

Reply

kohomologie June 23 2010, 22:16:39 UTC
+1

Reply

creaturen2 June 24 2010, 03:03:34 UTC
+2 :)

Reply

niobium0 June 24 2010, 07:02:48 UTC
+1, жду с нетерпением.

Reply


burrru June 23 2010, 21:31:03 UTC
Думаю, важно местоимение. Пока это "я" и даже "мы", С и С++ сравнимы и у каждого есть свои преимущества. Но когда появляются "они", С++ выглядит более уместным.

Reply

avva June 23 2010, 22:23:24 UTC
Хорошо сказано. А почему - выглядит более уместным?

Reply

burrru June 24 2010, 15:31:24 UTC
Encapsulation в основном. Не только из-за внешних пользователей. Я давно не писал на С и, вероятно, необъективен, но мне представляется, что организовать совместную работу нескольких отделов проще, когда проекты написаны на С++.

Reply

vasja_iz_aa June 25 2010, 19:38:44 UTC
Цпп удобнее, если над проектом работает достаточно большой коллектив программистов разной квалификации. Когда действительно грамотных меньше штук, чем хотелось бы, зато есть достаточно много старательных.
Правда вряд ли автор первоначального комментария имел ввиду именно это.

Reply


chaganazana June 23 2010, 22:24:47 UTC
>> Никаких дешевых парадоксов, просто два разных смысла слова 'лучше'.

Другими словами, все хорошо в своем месте и в свое время.

Reply


Leave a comment

Up