Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Глобальные переменные, опасны? Нужны? 
V
    Опции темы
Alek86
Дата 17.3.2008, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



не помню, честно говоря, где именно с "плохими словами"
для начала можно поискать в гугле по строке: "C++ is a horrible language"


--------------------
user posted image    user posted image
PM MAIL   Вверх
SABROG
Дата 17.3.2008, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 4
Всего: 91



Цитата(bsa @ 17.3.2008,  18:18)
MAKCim, метеориты бывают разных размеров. Причем, далеко не все, долетающие до земли, могут быть зафиксированы заранее.

Пора статью писать на тему "Что общего между C++ и метеоритами"  smile 

Вот, что Лайнус пишет, если кто переведет смысл буду благодарен:

Цитата

From: Linus Torvalds <torvalds <at> linux-foundation.org>
Subject: Re: [RFC] Convert builin-mailinfo.c to use The Better String Library.
Newsgroups: gmane.comp.version-control.git
Date: 2007-09-06 17:50:28 GMT (27 weeks, 3 days, 21 hours and 34 minutes ago)

On Wed, 5 Sep 2007, Dmitry Kakurin wrote:

> When I first looked at Git source code two things struck me as odd:
> 1. Pure C as opposed to C++. No idea why. Please don't talk about portability,
> it's BS.

*YOU* are full of bullshit.

C++ is a horrible language. It's made more horrible by the fact that a lot 
of substandard programmers use it, to the point where it's much much 
easier to generate total and utter crap with it. Quite frankly, even if 
the choice of C were to do *nothing* but keep the C++ programmers out, 
that in itself would be a huge reason to use C.

In other words: the choice of C is the only sane choice. I know Miles 
Bader jokingly said "to piss you off", but it's actually true. I've come 
to the conclusion that any programmer that would prefer the project to be 
in C++ over C is likely a programmer that I really *would* prefer to piss 
off, so that he doesn't come and screw up any project I'm involved with.

C++ leads to really really bad design choices. You invariably start using 
the "nice" library features of the language like STL and Boost and other 
total and utter crap, that may "help" you program, but causes:

 - infinite amounts of pain when they don't work (and anybody who tells me 
   that STL and especially Boost are stable and portable is just so full 
   of BS that it's not even funny)

 - inefficient abstracted programming models where two years down the road 
   you notice that some abstraction wasn't very efficient, but now all 
   your code depends on all the nice object models around it, and you 
   cannot fix it without rewriting your app.

In other words, the only way to do good, efficient, and system-level and 
portable C++ ends up to limit yourself to all the things that are 
basically available in C. And limiting your project to C means that people 
don't screw that up, and also means that you get a lot of programmers that 
do actually understand low-level issues and don't screw things up with any 
idiotic "object model" crap.

So I'm sorry, but for something like git, where efficiency was a primary 
objective, the "advantages" of C++ is just a huge mistake. The fact that 
we also piss off people who cannot see that is just a big additional 
advantage.

If you want a VCS that is written in C++, go play with Monotone. Really. 
They use a "real database". They use "nice object-oriented libraries". 
They use "nice C++ abstractions". And quite frankly, as a result of all 
these design decisions that sound so appealing to some CS people, the end 
result is a horrible and unmaintainable mess.

But I'm sure you'd like it more than git.

    Linus



Ицточнег: http://thread.gmane.org/gmane.comp.version...643/focus=57918

git - программа контроля версий типа cvs и subversion
VCS - version control service/server

Я так понял git написан на чистом Си, а C++ ему не нравится из-за навороченности с ООП и еще речь о каких-то крашах непонятных, говорит хотите систему контроля версий написанную на C++ со всякими stl, boost'aми и т.д. юзайте monotone (еще одна cvs).

Грубо говоря ассемблер это наше всё  smile 

Цитата

It has nothing to do with dinosaurs. Good taste doesn't go out of style, 
and comparing C to assembler just shows that you don't have a friggin idea 
about what you're talking about.


Упс  smile 

И Jav'e досталось  smile 
Цитата

And if you want a fancier language, C++ is absolutely the worst one to 
choose. If you want real high-level, pick one that has true high-level 
features like garbage collection or a good system integration, rather than 
something that lacks both the sparseness and straightforwardness of C, 
*and* doesn't even have the high-level bindings to important concepts. 

IOW, C++ is in that inconvenient spot where it doesn't help make things 
simple enough to be truly usable for prototyping or simple GUI 
programming, and yet isn't the lean system programming language that C is 
that actively encourags you to use simple and direct constructs.

    Linus


Это сообщение отредактировал(а) SABROG - 17.3.2008, 18:58


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
archimed7592
Дата 17.3.2008, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



SABROG, он пишет, почему он выбрал именно Си для реализации Git(IIRC, дело было в 2005).
Переведу только одно предложение, наиболее резко и лаконично показывающее отношение Линуса к С++
Цитата(SABROG @  17.3.2008,  18:23 Найти цитируемый пост)
Quite frankly, even if 
the choice of C were to do *nothing* but keep the C++ programmers out, 
that in itself would be a huge reason to use C.


Цитата
Откровенно говоря, даже если бы выбор Си [как языка реализации Git] был бы обусловлен только тем, чтобы проучить С++ программистов, то это само по себе было бы очень веское основание выбрать именно Си.




Это сообщение отредактировал(а) archimed7592 - 17.3.2008, 19:01


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
MAKCim
Дата 17.3.2008, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



забавно  smile 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Earnest
Дата 17.3.2008, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



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


--------------------
...
PM   Вверх
JackYF
Дата 17.3.2008, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(MAKCim @  17.3.2008,  16:37 Найти цитируемый пост)
я тебе даю 100% гарантию, что завтра на тебя метеорит не упадет

Ты не можешь мне дать 100%-ную гарантию ничего-либо, что ещё не произошло smile Ну физические не можешь - ты не можешь учесть _все_ обстоятельства - мы всего лишь люди, а не боги smile

Цитата(MAKCim @  17.3.2008,  17:00 Найти цитируемый пост)
если бы была потенциальная опасность для Земли, это было бы всем известно
причем известно не за один день до столкновения  smile 
отсюда вывод: гарантия 100%

Первый вывод неверен. Ты хочешь сказать, что вероятность неинформирования тебя об этом равна нулю? smile


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
vinter
Дата 17.3.2008, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



кстати кто что думает об интервенции китайцев на Дальнем Востоке?


--------------------
Мой блог
PM MAIL WWW   Вверх
MAKCim
Дата 17.3.2008, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата(Earnest @  17.3.2008,  19:45 Найти цитируемый пост)
что, религия запрещает скопировать ссылку в авто-переменную?

что делать в случае если он (объект, инкапсулированный в синглетон) будет уничтожен и локальная ссылка станет невалидной?  smile

Добавлено через 1 минуту и 6 секунд
Цитата(JackYF @  17.3.2008,  20:20 Найти цитируемый пост)
Ты хочешь сказать, что вероятность неинформирования тебя об этом равна нулю?

думаю, да  smile

Добавлено через 2 минуты и 7 секунд

M
MAKCim
Все, с оффтопом заканчиваем



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Mayk
Дата 18.3.2008, 07:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



синглтоны тоже не люблю. Люблю обратную инициализацию. Или как там этот паттерн называется:
Вместо
Код

Foo::bar(){
    Logger::instance().write("i am a bar!");
}
...
main(){
    Foo foo;
    foo.bar()
}

делать
Код

Foo::setLogger(Logger* l){
    loggerInstance  = l;
}
Foo::bar(){
    if( loggerInstance )
       loggerInstance->write( "i am a bar!" );
}
...
main(){
    Foo foo;
    Logger l(std::cout)
    foo.setLogger( &l )
    foo.bar()



Цитата(Rickert @  17.3.2008,  12:57 Найти цитируемый пост)
Программисты стали настолько слабы, что не могу контролировать процесс изменения переменных? Твои слова актуальны для крупных команд разработчиков.

Программисты настолько слабы что не могут держать в памяти всё и вся. Если программа начинает не вмешацца на экран --- ОЙ.




--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Earnest
Дата 18.3.2008, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Цитата(MAKCim @  17.3.2008,  23:06 Найти цитируемый пост)
что делать в случае если он (объект, инкапсулированный в синглетон) будет уничтожен и локальная ссылка станет невалидной

Решать проблемы по мере поступления. Использование глобальной переменной здесь тоже не поможет. Если объект может исчезнуть, когда ему приспичит, нужно принимать адекватные меры - ссылки считать, например.

Добавлено через 2 минуты и 44 секунды
Mayk, дык твой вариант подлиннее получается - за шо ж его любить? smile 
Синглетоны, конечно, не панацея от всего, как и все остальное, впрочем. Каждому сверчку - по шестку.


--------------------
...
PM   Вверх
MAKCim
Дата 18.3.2008, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата(Earnest @  18.3.2008,  11:04 Найти цитируемый пост)
Использование глобальной переменной здесь тоже не поможет. Если объект может исчезнуть, когда ему приспичит, нужно принимать адекватные меры - ссылки считать, например.

вот пример
Код

SomeClass * variable; // global definition
...
for (...) {
    if (!variable)
        break;
    // work with variable
    // some actions
}
...

в some actions может идти, например, вызов функций, одна из которых удаляет variable (или реинициализирует (delete + new), или еще что-нибудь в этом роде)
программа однопоточная



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
SABROG
Дата 18.3.2008, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 4
Всего: 91



Цитата(Mayk @  18.3.2008,  07:59 Найти цитируемый пост)
    Foo foo;
    foo.bar()


Если возвращаться к теме об интервенции китайцев на дальнем востоке, то ради любопытства хотелось бы узнать как переводится слова "foo", "bar" и "foobar", гугл транслейт отжигает: "фоо", "бар".


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
MAKCim
Дата 18.3.2008, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



SABROG
тут


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
SABROG
Дата 18.3.2008, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 4
Всего: 91



Цитата(MAKCim @ 18.3.2008,  23:15)
SABROG
тут

Спс, жалко там так и не написали "откуда есть пошла русская земля". А вообще странное у американцев понятие слова "хакер", для них это каста программистов фанатиков, а не отряд бойцов дельфистов выпущенных МГУ. У нас же это человек обязательно нарушающий статьи 272, 273

Это сообщение отредактировал(а) SABROG - 18.3.2008, 23:46


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
bsa
Дата 19.3.2008, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Цитата(SABROG @ 18.3.2008,  23:45)
А вообще странное у американцев понятие слова "хакер", для них это каста программистов фанатиков, а не отряд бойцов дельфистов выпущенных МГУ. У нас же это человек обязательно нарушающий статьи 272, 273

http://ru.wikipedia.org/wiki/Хакер

Это не у американцев странное, а у нас благодаря серости журналистов. Помню еще батя говорил мне года эдак 20-22 назад, что мечтает, чтобы я стал хакером (потому что это "высшая каста")... И об уголовщине речи вообще не шло (мне было лет 5-7).

Это сообщение отредактировал(а) bsa - 19.3.2008, 00:31
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1041 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.