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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чем лучше объектный C++ , чем С, для простых прог? С++ 
:(
    Опции темы
NebelDT
  Дата 30.9.2008, 11:32 (ссылка)    | (голосов:12) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: -1
Всего: -10



Чем лутше объектный C++ , чем С, для простых прог? smile 
Так же проше ...
Код

#include <stdio.h>
#include <conio.h>
#include <math.h>
void main()
{
const m=10;
int i,j,n;
int x[m][m];
for(...
printf("%3d",x[i][j]);
}
printf("\n");
}
printf("\n");
fflush(stdin);
getch();
}


PM MAIL WWW YIM   Вверх
Kozel
Дата 30.9.2008, 11:38 (ссылка) |    (голосов:5) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 29.11.2007

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



Проще чего?? smile 
PM MAIL   Вверх
NebelDT
Дата 30.9.2008, 11:40 (ссылка)    | (голосов:7) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: -1
Всего: -10



Проше чем необъектный))
PM MAIL WWW YIM   Вверх
mrbrooks
Дата 30.9.2008, 12:20 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


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

Репутация: нет
Всего: 306



NebelDT, я не понял - ты хочешь сказать что реализовал в своем коде парадигмы ООП? Или наоборот убил С++ своим подходом?
PM MAIL   Вверх
Lazin
Дата 30.9.2008, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



Цитата(NebelDT @  30.9.2008,  11:32 Найти цитируемый пост)
для простых прог?

простых программ не бывает smile 
PM MAIL Skype GTalk   Вверх
MAKCim
Дата 30.9.2008, 13:08 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(NebelDT @  30.9.2008,  11:32 Найти цитируемый пост)
Чем лутше объектный C++ , чем С, для простых прог?

ничем
я даже больше скажу, и для сложных программ С++ не лучше  smile 
(можете начинать набрасываться на меня)


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

PM MAIL   Вверх
Mayk
Дата 30.9.2008, 13:23 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Lazin @  30.9.2008,  16:34 Найти цитируемый пост)

простых программ не бывает

бывают, бывают.
вот допустим задача - забить свежесформированную тестовую бд рандомными числами/строками.
тут что классы что ни классы - все довольно просто.


Цитата(MAKCim @  30.9.2008,  17:08 Найти цитируемый пост)
(можете начинать набрасываться на меня) 

На с++ есть гламурный qt. на си его нет  smile 


Это сообщение отредактировал(а) Mayk - 30.9.2008, 13:24


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


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


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

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



Цитата(Mayk @  30.9.2008,  13:23 Найти цитируемый пост)
На с++ есть гламурный qt. на си его нет 

GTK+?  smile 


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

PM MAIL   Вверх
UnrealMan
Дата 30.9.2008, 16:08 (ссылка) |   (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 0
Всего: 32



Цитата(MAKCim @  30.9.2008,  14:08 Найти цитируемый пост)
я даже больше скажу, и для сложных программ С++ не лучше  

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

Это сообщение отредактировал(а) UnrealMan - 30.9.2008, 16:43
PM MAIL   Вверх
UnrealMan
Дата 30.9.2008, 16:42 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 0
Всего: 32



По теме топикстартеру можно предложить почитать книгу "Дизайн и эволюция C++" Б.Страуструпа.
PM MAIL   Вверх
NebelDT
Дата 30.9.2008, 17:21 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: -1
Всего: -10



UnrealMan Пасиб! но сейчас мне не до этого, надо делать лабы по С++... smile 
PM MAIL WWW YIM   Вверх
MAKCim
Дата 30.9.2008, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



UnrealMan
ну, скажем так
любой специалист в своей области будет гуру
так что не надо сарказма

С++ объективно сложный, перегруженный, с кучей подводных камней и граблей, интерпретируемым кем угодно и как угодно стандартом
какие у него преимущества перед С?
ООП? так ООП != ЯП
программировать объектно можно и на С, причем это будет не менее эффективно
программистам на С++ это может показаться странным и нелогичным, но на то это и С++ программисты  smile 
какие еще преимущества? STL?  есть куча либ, написанных на С на все случаи жизни
но в отличие от STL они эффективны на всех платформах, реализация же STL различна для каждого компилятора
исключения? имхо, они полезны для автоматического управления ресурсами
в С они абсолютно заменяемы через goto, т. к мы полностью сами управляем жизненным циклом объектов (нет деструкторов и пр.)
полиморфизм? реализуется через такие штуки
Код

struct generic
{
    void *data;
    void *(*callback)(void*);
};

наследование? заменяется агрегированим (по сути любая реализация наследования - есть агрегирование)
удобство? как говорится, на вкус и цвет...
что еще?


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

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


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: нет
Всего: 14



Цитата(MAKCim @  30.9.2008,  21:36 Найти цитируемый пост)
что еще? 

type-safety
ну конечно если вы за всеми своими войдами можете уследить глазами и макросами (которые кстати в глобальном пространстве имен) то да, ничем не лучше... но тогда нахена вам вообще ЯВУ? пишите на ассемблее... а еще лучше - сразу в машинных кодах - и компилятор не нужен  smile 

Это сообщение отредактировал(а) J0ker - 1.10.2008, 00:01


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


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



Цитата(MAKCim @  30.9.2008,  21:36 Найти цитируемый пост)

программировать объектно можно и на С, причем это будет не менее эффективно

Ага, только есть один маленький нюанс  :  на С++ грязную работу делает компилятор, а на Си программист
поэтому  такой подход
Цитата(MAKCim @  30.9.2008,  21:36 Найти цитируемый пост)
программистам на С++ это может показаться странным и нелогичным

  smile 

Цитата(J0ker @  1.10.2008,  00:00 Найти цитируемый пост)
type-safety

 smile а сколько еще благ, помимо безопасности, хранит в себе типизация ! 

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





--------------------
PM MAIL WWW   Вверх
Mayk
Дата 1.10.2008, 05:51 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Урра! холивар! 

Цитата(MAKCim @  30.9.2008,  17:25 Найти цитируемый пост)

GTK+?

По сравненю с QT? Ты бы ещё XLib назвал.  smile 

Цитата(MAKCim @  1.10.2008,  01:36 Найти цитируемый пост)
какие еще преимущества? STL?  есть куча либ, написанных на С на все случаи жизни

Обрати внимание на вторую букву в STL. В си нет шаблонов. И аналогов тоже нет.


Цитата(MAKCim @  1.10.2008,  01:36 Найти цитируемый пост)
но в отличие от STL они эффективны на всех платформах, реализация же STL различна для каждого компилятора

Эффективны? Да вот только вызовы ф-ций в qsort не встраиваются. STL же inline'ится за милую душу.
Про разность реализации - glibc и freebsd libc тоже различны. И?

Цитата(MAKCim @  1.10.2008,  01:36 Найти цитируемый пост)
что еще? 

RAII. очень полезно 
Цитата(MAKCim @  1.10.2008,  01:36 Найти цитируемый пост)
для автоматического управления ресурсами



Цитата(MAKCim @  1.10.2008,  01:36 Найти цитируемый пост)
программировать объектно можно и на С, причем это будет не менее эффективно

можно. только зачем, если есть с++, java, c#?

Это сообщение отредактировал(а) Mayk - 1.10.2008, 05:51


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


Эксперт
****


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

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



Цитата(Mayk @ 1.10.2008,  05:51)
Цитата(MAKCim @  1.10.2008,  01:36 Найти цитируемый пост)
программировать объектно можно и на С, причем это будет не менее эффективно

можно. только зачем, если есть с++, java, c#?

Ну как же! Если у тебя сложный проект, а-ля ядро операционной системы, то куда же без этого! Ведь принятно все системные вещи писать исключительно на Си. А без объектного программирования сложный проект практически нереально состряпать, чтобы он еще мог жить и развиваться.
Имхо, каждому свое. Я, лично, считаю, что прикладной софт нужно писать на С++ - сильная экономия времени. А системный (особенно, системные библиотеки) на Си из-за большей стандартизованности.
PM   Вверх
MAKCim
Дата 1.10.2008, 08:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Mayk @  1.10.2008,  05:51 Найти цитируемый пост)
Урра! холивар! 

да, отлично, надо бы перенести  smile 


Цитата(mes @  1.10.2008,  03:26 Найти цитируемый пост)
Ага, только есть один маленький нюанс  :  на С++ грязную работу делает компилятор, а на Си программист
поэтому  такой подход

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


Цитата(Mayk @  1.10.2008,  05:51 Найти цитируемый пост)
По сравненю с QT? Ты бы ещё XLib назвал. 

а что, Xlib штуковина мощная  smile 
правда все ручками делать нужно и нет ничего готового


Цитата(Mayk @  1.10.2008,  05:51 Найти цитируемый пост)
Обрати внимание на вторую букву в STL. В си нет шаблонов. И аналогов тоже нет.

они в С не нужны, тут есть void*  smile 
чем это
Код

t_vector *v = vector_create(32, int);
vector_get(v, i) = 50;
vector_destroy(v);

хуже
Код

vector<int> v = vector<int>(32);
v[i] = 50;

единственное, это явная необходимость управления ресурсами
хотя это даже преимущество, а не недостаток  smile 
а все, что касается списков, деревьев, хэшей и т. д (все, что имеет списочную природу)
то в С из-за отсутствия шаблонов применяется концептуально иной подход
не объект списка хранит адреса соседних элементов, а сами элементы
Цитата(Mayk @  1.10.2008,  05:51 Найти цитируемый пост)
RAII. очень полезно 

я уже писал об этом

Цитата(Mayk @  1.10.2008,  05:51 Найти цитируемый пост)
можно. только зачем, если есть с++, java, c#

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

Добавлено @ 08:31
да, кстати, большинство кроссплатформенных либ (причем многие огромные) написаны на С
казалось бы, зачем заниматься геморроей и писАть на С, когда есть С++ 
или С++ непереносим  smile  smile

Добавлено через 7 минут и 43 секунды
Цитата(bsa @  1.10.2008,  08:23 Найти цитируемый пост)
Ведь принятно все системные вещи писать исключительно на Си. А без объектного программирования сложный проект практически нереально состряпать, чтобы он еще мог жить и развиваться.

это верно на 100%  smile

Добавлено через 9 минут и 7 секунд
Цитата(bsa @  1.10.2008,  08:23 Найти цитируемый пост)
Я, лично, считаю, что прикладной софт нужно писать на С++ - сильная экономия времени.

я считаю, что одинаково
главное, чтобы человек был профессионал в своем деле  smile 

Это сообщение отредактировал(а) MAKCim - 1.10.2008, 08:33


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

PM MAIL   Вверх
bsa
Дата 1.10.2008, 08:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(MAKCim @ 1.10.2008,  08:27)
главное, чтобы человек был профессионал в своем деле  smile

 smile 
PM   Вверх
UnrealMan
Дата 1.10.2008, 11:32 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 0
Всего: 32



Цитата(MAKCim @  30.9.2008,  22:36 Найти цитируемый пост)
С++ объективно сложный

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

Цитата(MAKCim @  30.9.2008,  22:36 Найти цитируемый пост)
какие у него преимущества перед С?

Собственно такие, из-за которых C++ появился на свет (было бы наивно предполагать, что его придумали исключительно из-за того, что кому-то некуда было растрачивать свою творческую энергию). Проблемы программирования на C перемалывались уже сотни раз, в том числе в D&E.

Цитата(MAKCim @  30.9.2008,  22:36 Найти цитируемый пост)
программировать объектно можно и на С, причем это будет не менее эффективно

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

Цитата(MAKCim @  30.9.2008,  22:36 Найти цитируемый пост)
но в отличие от STL они эффективны на всех платформах, реализация же STL различна для каждого компилятора

А для каждого компилятора разработчики не стремятся реализовать эффективно работающую STL? И STLport уже не является портируемой реализацией STL?

Цитата(MAKCim @  30.9.2008,  22:36 Найти цитируемый пост)
исключения? имхо, они полезны для автоматического управления ресурсами

Надо же, как мало полезного в механизме, который используется далеко не в одном C++ smile 

Цитата(MAKCim @  30.9.2008,  22:36 Найти цитируемый пост)
в С они абсолютно заменяемы через goto,

Да неужели? Один goto позволяет выйти из кучи функций (с освобождением захваченных ресурсов) и попасть в обработчик, о котором функция, выявившая исключительную ситуацию, ничего не знает? 

Цитата(MAKCim @  30.9.2008,  22:36 Найти цитируемый пост)
полиморфизм? реализуется через такие штуки

Угу, за соответствием типов дядя Вася будет следить.

Цитата(Mayk @  1.10.2008,  06:51 Найти цитируемый пост)
В си нет шаблонов. И аналогов тоже нет.

Цитата(MAKCim @  1.10.2008,  09:27 Найти цитируемый пост)
они в С не нужны, тут есть void*

В C++ тоже есть void*. Только почему-то вместо этого используют шаблоны. Странно, правда? Макросами с void* в лучшем случае кое-как можно заменить простые шаблоны (правда, придётся долбаться с их ручным "инстанцированием"). А что ты будешь делать, когда придётся изобразить шаблонный член шаблонного класса? В C++ я могу записать так:

Код
std::list<int> li;
/* ... */
std::vector<double> v(li.begin(), li.end());

Вместо std::list<int> можно взять хоть std::list<unsigned char>, хоть std::deque<short>, при этом инициализация vector будет выглядеть так же просто. Попробуй-ка изобрази такую обобщённость с помощью макросов и void* - пупок развяжется и пузико лопнет.

Цитата(MAKCim @  1.10.2008,  09:27 Найти цитируемый пост)
чем это [...] хуже

В строчке

Код
vector_get(v, i) = 50;

ты забыл указать, с каким типом работаешь.

Цитата(MAKCim @  1.10.2008,  09:27 Найти цитируемый пост)
единственное, это явная необходимость управления ресурсами
хотя это даже преимущество, а не недостаток  

Обалденное преимущество. Искать утечки ресурсов - это ж такая романтика! smile
Только не говори, что гуру C никогда ничего не забывают (в том числе вовремя освобождать ресурсы). Я в такие сказочки не верю. В теории управлять ресурсами ручками, конечно, можно. Но дык в теории можно и программу целиком написать без единой помарки - так, что она сразу без выдачи компилятором ошибок соберётся, вот только часто ли у вас такое бывает на практике?

Цитата(MAKCim @  1.10.2008,  09:27 Найти цитируемый пост)
не объект списка хранит адреса соседних элементов, а сами элементы

Что-то не понял я, где это в C++ объект std::list<> хранит адреса соседних элементов smile 

Это сообщение отредактировал(а) UnrealMan - 1.10.2008, 12:17
PM MAIL   Вверх
J0ker
Дата 1.10.2008, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: нет
Всего: 14



Цитата(UnrealMan @  1.10.2008,  11:32 Найти цитируемый пост)
Но дык в теории можно и программу целиком написать без единой помарки - так, что она сразу без выдачи компилятором ошибок соберётся

Цитата(J0ker @  1.10.2008,  00:00 Найти цитируемый пост)
а еще лучше - сразу в машинных кодах - и компилятор не нужен   smile 

хыхыхы 



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


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


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

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



Цитата(UnrealMan @  1.10.2008,  11:32 Найти цитируемый пост)
Верно, и некоторым людям в силу собственной лени к изучению новых технологий в программировании психологически проще убедить себя, что старые технологии мол и так работают достаточно эффективно, чем взяться за рассмотрение пугающе большого объёма материала. По этой же причине некоторым, причисляющим себя к программистам C++, не хочется изучать STL или Boost - они до конца жизни готовы изобретать велосипеды, убеждая себя и других в том, что такой подход ничем не хуже, чем использование готовых и проверенных временем средств.

ты никак не можешь понять, что под С есть точно такая же куча всевозможных либ, решающих возникающие в процессе разработки сопутствующие вопросы  smile 


Цитата(UnrealMan @  1.10.2008,  11:32 Найти цитируемый пост)
А для каждого компилятора разработчики не стремятся реализовать эффективно работающую STL? 

"стремится" и "получится в итоге" - разные вещи  smile 

 
Цитата(UnrealMan @  1.10.2008,  11:32 Найти цитируемый пост)
Надо же, как мало полезного в механизме, который используется далеко не в одном C++

что поделаешь...


Цитата(UnrealMan @  1.10.2008,  11:32 Найти цитируемый пост)
Да неужели? Один goto позволяет выйти из кучи функций (с освобождением захваченных ресурсов) и попасть в обработчик, о котором функция, выявившая исключительную ситуацию, ничего не знает? 

исключения работают точно так же (по принципу лестницы)
через goto переходим на error_1:, error_2:, ..., error_N:
освобождаем ресурсы, возвращаем в вызыващую функцию код ошибки, она в свою очередь таким же образом использует goto и т. д

 
Цитата(UnrealMan @  1.10.2008,  11:32 Найти цитируемый пост)
Угу, за соответствием типов дядя Вася будет следить.

ну, тот, кто реализовал generic, в курсе типов, а остальному коду о них не нужно знать  smile 


Цитата(UnrealMan @  1.10.2008,  11:32 Найти цитируемый пост)
А что ты будешь делать, когда придётся изобразить шаблонный член шаблонного класса? В C++ я могу записать так:

в С это не нужно  smile 

потом на остальное отвечу


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

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


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: нет
Всего: 14



Цитата(MAKCim @  1.10.2008,  18:42 Найти цитируемый пост)
ну, тот, кто реализовал generic, в курсе типов, а остальному коду о них не нужно знать

а программисту? программисту знать нужно?  smile 
Цитата(MAKCim @  1.10.2008,  18:42 Найти цитируемый пост)
в С это не нужно  smile 

вы случайно подмигиваете не насчет макросов в глобальном нэймспэйс? тогда лучше такой смайлик -  smile 



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


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


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

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



Цитата(J0ker @  1.10.2008,  19:37 Найти цитируемый пост)
а программисту? программисту знать нужно?

еще раз повторяю, нужно тому, кто ее реализовал  smile 
все остальные используют таким образом
Код

void run(t_generic *array, size_t count)
{
    while (count--) array[count].callback(array[count].data);
}


Цитата(J0ker @  1.10.2008,  19:37 Найти цитируемый пост)
вы случайно подмигиваете не насчет макросов в глобальном нэймспэйс?

не, у меня глаз дергается просто  smile 


Цитата(UnrealMan @  1.10.2008,  11:32 Найти цитируемый пост)
Попробуй-ка изобрази такую обобщённость с помощью макросов и void* - пупок развяжется и пузико лопнет.

Код

#define vector_in(vector, object, iterator, type) \
    ({ type *p; \
    while (iterator(object, &p)) vector_add(vector, p, type); })

t_list *li = list_create(int);
...
t_vector *v = vector_create(double);
vector_in(v, li, list_for_each, double);



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

PM MAIL   Вверх
J0ker
Дата 1.10.2008, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: нет
Всего: 14



Цитата(MAKCim @  1.10.2008,  21:18 Найти цитируемый пост)
все остальные используют таким образом
Код

void run(t_generic *array, size_t count)
{
    while (count--) array[count].callback(array[count].data);
}

ага, а array с нетипизированной требухой у нас пушкин заполняет, который волшебным образом нашепчет пользователю вашего чуда, что callback жестоко навернется когда мы ему случайно постороннюю структуру подсунем
или давайте все задефйним нафик как здесь:
Код

#define vector_in(vector, object, iterator, type) \
    ({ type *p; \
    while (iterator(object, &p)) vector_add(vector, p, type); })

а потом набьем морду злобному конкуренту, захотевшему заюзать кровно-наше vector_in
а заодно и пользователю - за измену  smile 

у меня к вам конструктивное предложение - вы в конец дефайнов дописывайте GUID
ну не замечательно ли: vector_in_7F272518_73F9_4fb2_A374_EA310B8EBE7B  smile 

Это сообщение отредактировал(а) J0ker - 1.10.2008, 21:42


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


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


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

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



Цитата(J0ker @  1.10.2008,  21:41 Найти цитируемый пост)
ага, а array с нетипизированной требухой у нас пушкин заполняет, который волшебным образом нашепчет пользователю вашего чуда, что callback жестоко навернется когда мы ему случайно постороннюю структуру подсунем

а в С++ можно изменить private поле если очень захотеть
и что из этого?  smile 

на каждое "а если", можно найти другое "а если"

Добавлено через 5 минут и 49 секунд
как-то дискуссия плавно перешла в то, какими извращениями можно реализовать шаблоны в С
 smile 
зато в С есть массивы переменной длины на стеке
вектора STL курят  smile  smile 


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

PM MAIL   Вверх
vinter
Дата 1.10.2008, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


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

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



Цитата(MAKCim @  1.10.2008,  23:05 Найти цитируемый пост)
вектора STL курят

мало того, они еще и пьют и прочему непотребствами занимаются  smile  ухожу ухожу


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


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: нет
Всего: 14



Цитата(MAKCim @  1.10.2008,  22:05 Найти цитируемый пост)
а в С++ можно изменить private поле если очень захотеть

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

Цитата(MAKCim @  1.10.2008,  22:05 Найти цитируемый пост)
зато в С есть массивы переменной длины на стеке

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


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


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


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

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



Цитата(J0ker @  1.10.2008,  22:52 Найти цитируемый пост)
слив защитан

вы о чем, сударь?  smile 
и коню понятно, что в С нет шаблонов
вопрос состоит в том, а нужны ли они и можно ли обойтись без них
ответ положительный


Цитата(J0ker @  1.10.2008,  22:52 Найти цитируемый пост)
без выкруасов всего того что вы там понаписали на C не реализовать - либо плюем на безопасность типов

я вот не понимаю
у нас есть структура t_generic
ее использование однозначно (t_generic->callback(t_generic->data))
с какого перепуга мы можем в t_generic->callback передать что-то отличное от t_generic->data?


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

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


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: нет
Всего: 14



Цитата(MAKCim @  1.10.2008,  23:08 Найти цитируемый пост)
вопрос состоит в том, а нужны ли они и можно ли обойтись без них
ответ положительный

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

Цитата(MAKCim @  1.10.2008,  23:08 Найти цитируемый пост)
я вот не понимаю

ну не надо прибедняться
все вы отлично понимаете  smile 

Цитата(MAKCim @  1.10.2008,  23:08 Найти цитируемый пост)
я вот не понимаю
у нас есть структура t_generic
ее использование однозначно (t_generic->callback(t_generic->data))
с какого перепуга мы можем в t_generic->callback передать что-то отличное от t_generic->data? 

с перепуга void*, который принимает ЛЮБОЙ указатель. А вот что-бы он был не любой - надо либо следить пользователю, либо использовать маловразумительные дефайны (ро дефйны см. выше). Оно нам надо?




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


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 0
Всего: 32



Цитата(MAKCim @  1.10.2008,  19:42 Найти цитируемый пост)
ты никак не можешь понять, что под С есть точно такая же куча всевозможных либ, решающих возникающие в процессе разработки сопутствующие вопросы  

Это ты намекаешь на то, что все эти либы якобы легко заменяют собой все новшества C++ по отношению к C?

Цитата(MAKCim @  1.10.2008,  19:42 Найти цитируемый пост)
исключения работают точно так же (по принципу лестницы)
через goto переходим на error_1:, error_2:, ..., error_N:
освобождаем ресурсы, возвращаем в вызыващую функцию код ошибки, она в свою очередь таким же образом использует goto и т. д

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

Цитата(MAKCim @  1.10.2008,  19:42 Найти цитируемый пост)
ну, тот, кто реализовал generic, в курсе типов, а остальному коду о них не нужно знать

Я-то думал, речь идёт о виртуальных функциях, а тут generic smile

Цитата(MAKCim @  1.10.2008,  19:42 Найти цитируемый пост)
в С это не нужно  

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

Цитата(MAKCim @  1.10.2008,  19:42 Найти цитируемый пост)
#define vector_in(vector, object, iterator, type) \
    ({ type *p; \
    while (iterator(object, &p)) vector_add(vector, p, type); })

t_list *li = list_create(int);
...
t_vector *v = vector_create(double);
vector_in(v, li, list_for_each, double);

Что это за потуги такие? smile Этот обрывок кода, будучи самую малость дополнен, видимо, свершит чудо - заменит шаблоны, приведённые выше по теме? А как насчёт законченного примерчика? Каракули-то мы все рисовать умеем, но только вот мало что можно в них разглядеть. Откуда, к примеру, vector_in узнает точный тип элементов списка? А ежели не узнает, то чего тогда будет присваивать объектам типа double?

Это сообщение отредактировал(а) UnrealMan - 2.10.2008, 00:31
PM MAIL   Вверх
Lazin
Дата 2.10.2008, 05:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



Цитата(MAKCim @  1.10.2008,  22:05 Найти цитируемый пост)
зато в С есть массивы переменной длины на стеке
вектора STL курят

и не засирают стек smile , все-же понимают, что на стеке много памяти выделять нельзя, а если очень хочется, то можно написать для вектора алокатор, который будет выделять память в стеке smile 
PM MAIL Skype GTalk   Вверх
MAKCim
Дата 2.10.2008, 08:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Lazin @  2.10.2008,  05:42 Найти цитируемый пост)
а если очень хочется, то можно написать для вектора алокатор, который будет выделять память в стеке 

в самом деле?
ну-ка ну-ка по-подробнее с этого места  smile 
может, ты перепутал сьаьтческий буфер в секции данных со стеком?




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

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


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


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

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



Цитата(UnrealMan @  2.10.2008,  00:22 Найти цитируемый пост)
Это ты намекаешь на то, что все эти либы якобы легко заменяют собой все новшества C++ по отношению к C?

все "новшества" - это синтаксический сахар


Цитата(UnrealMan @  2.10.2008,  00:22 Найти цитируемый пост)
лишнее время на реализацию того, что в C++ уже давно автоматизировано.

гы
за нас компилятор конечно же создаст деструкторы, которые будут уничтожать наши ресурсы...  smile  smile 
точно так же придется ручками писАть
разница лишь в том, что в С функцию освобождения ресурсов надо вызывать вручную


Цитата(UnrealMan @  2.10.2008,  00:22 Найти цитируемый пост)
Я-то думал, речь идёт о виртуальных функциях, а тут generic

виртуальные функции реализованы точно также, как и t_generic->callback
есть таблица ВФ, есть ее адрес в объекте, есть данные
Код

typedef struct poly_class_vt
{
    int (*get)(void*);
    void (*set)(void*, int);
}
t_poly_class_vt;

struct poly_class
{
    t_poly_class_vt *vt;
    void *data;
};
...
void use(struct poly_class *pc)
{
    int v;
    v = pc->vt->get(pc->data);
    ++v;
    pc->vt->set(pc->data, v);
}



Цитата(UnrealMan @  2.10.2008,  00:22 Найти цитируемый пост)
Но вешать эту лапшу на уши другим, пожалуйста, не надо

никто и не вешает
только факты, мой друг, только факты  smile 


Цитата(UnrealMan @  2.10.2008,  00:22 Найти цитируемый пост)
C++ программистам и без неё вполне хорошо живётся

 smile 


Цитата(UnrealMan @  2.10.2008,  00:22 Найти цитируемый пост)
Ах вот оно что. Т.е. если мы на C чего-то не можем, то скажем, что не очень-то и хотелось

вот именно, что никто себя не обманывает
зачем выдавать за факт то, чего нет
я уже давно сказал, что в С нет шаблонов
а так ли они необходимы?
ты уперся на своем, дескать шаблонов нет - и все, без них типа жить нельзя

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

тот же boost - это мегатонны неудобночитаемого кода...
попытка универсализировать шаблоны, показать всю их "мощь"
дефайны по сравнению с этой кашей - это еще вполне удобноваримо  smile 


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

PM MAIL   Вверх
Любитель
Дата 2.10.2008, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Пока читал тему понаквотил целую кучу фраз. Когда доскроллил до формочки ответа понял, что на всё отвечать лень, поэтому просто выскажу своё мнение. smile

Итак, С++ - объективно сложный и запутанный в современном состоянии. Это да.

Библиотеки? Если говорим про прикладнуху, то Qt достаточно чтобы считать С++ круче smile IMHO, конечно.

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

А будущее (в прикладном ПО) вообще за всякими питонами, шарпами, явами и пр.



--------------------
PM MAIL ICQ Skype   Вверх
Mayk
Дата 2.10.2008, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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




Цитата(MAKCim @  2.10.2008,  12:28 Найти цитируемый пост)
дефайны по сравнению с этой кашей - это еще вполне удобноваримо  smile  

неа.
Код

#define vector_in(vector, object, iterator, type) \
    ({ type *p; \
    while (iterator(object, &p)) vector_add(vector, p, type); })

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


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


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 0
Всего: 32



Цитата(MAKCim @  2.10.2008,  09:28 Найти цитируемый пост)
все "новшества" - это синтаксический сахар

Да ну? Поддержка RTTI, исключения, шаблоны - всё это синтаксический сахар? Что же тогда по-твоему не синтаксический сахар? Может, у тебя и библиотечные функции - синтаксический сахар? smile

Цитата(MAKCim @  2.10.2008,  09:28 Найти цитируемый пост)
за нас компилятор конечно же создаст деструкторы, которые будут уничтожать наши ресурсы...  

Между прочим, компилятор C++ самостоятельно вызывает деструкторы для базовых подобъектов и нестатических членов-данных объекта. Для весомой части классов деструкторов, сгенерированных компилятором по умолчанию, вполне достаточно. А там, где недостаточно, мы всё равно избавляемся от необходимости явно уничтожать агрегированные объекты.

Цитата(MAKCim @  2.10.2008,  09:28 Найти цитируемый пост)
точно так же придется ручками писАть
разница лишь в том, что в С функцию освобождения ресурсов надо вызывать вручную

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

Цитата(MAKCim @  2.10.2008,  09:28 Найти цитируемый пост)
никто и не вешает
только факты, мой друг, только факты  

Мсье выдаёт желаемое за действительное.

Цитата(MAKCim @  2.10.2008,  09:28 Найти цитируемый пост)
я уже давно сказал, что в С нет шаблонов
а так ли они необходимы?
ты уперся на своем, дескать шаблонов нет - и все, без них типа жить нельзя

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

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

Цитата(MAKCim @  2.10.2008,  09:28 Найти цитируемый пост)
тот же boost - это мегатонны неудобночитаемого кода...

А кто, собственно, требует читать исходники Boost? smile Вменяемый человек ради понимания того, как пользоваться библиотекой, руководствуется документацией к ней, а не её исходным кодом.
PM MAIL   Вверх
Lazin
Дата 2.10.2008, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



Цитата(MAKCim @  2.10.2008,  08:11 Найти цитируемый пост)
ну-ка ну-ка по-подробнее с этого места

Код

#include <limits>
#include <iostream>
#include <vector>
#include <malloc.h>


template <class T>
class stack_allocator 
{
public:
    typedef T        value_type;
    typedef T*       pointer;
    typedef const T* const_pointer;
    typedef T&       reference;
    typedef const T& const_reference;
    typedef std::size_t    size_type;
    typedef std::ptrdiff_t difference_type;

    template <class U>
    struct rebind 
    {
        typedef stack_allocator<U> other;
    };

    pointer address (reference value) const 
    {
        return &value;
    }
    const_pointer address (const_reference value) const 
    {
        return &value;
    }
    stack_allocator()
    {
    }
    stack_allocator(const stack_allocator&) 
    {
    }
    template <class U>
    stack_allocator (const stack_allocator<U>&)
    {
    }
    ~stack_allocator()
    {
    }
    size_type max_size () const
    {
        return std::numeric_limits<std::size_t>::max() / sizeof(T);
    }
    pointer allocate (size_type num, const void* = 0) 
    {
        pointer ret = (int*)_alloca( num*sizeof(T) );
        return ret;
    }
    void construct (pointer p, const T& value) 
    {
        new((void*)p)T(value);
    }
    // destroy elements of initialized storage p
    void destroy (pointer p) 
    {
        p->~T();
    }
    void deallocate (pointer p, size_type num) 
    {
        //dont need
    }
};

// return that all specializations of this allocator are interchangeable
template <class T1, class T2>
bool operator== (const stack_allocator<T1>&,
                 const stack_allocator<T2>&)
{
                     return true;
}
template <class T1, class T2>
bool operator!= (const stack_allocator<T1>&,
                 const stack_allocator<T2>&)
{
                     return false;
}


int main()
{
    {
        std::vector<int, stack_allocator<int> > vect;
        for(int i = 0; i < 10; ++i)
            vect.push_back(i);
        for(int i = 0; i < 10; ++i)
            std::cout << vect[i] << std::endl;
    }
    system("pause");

}

но только это нихрена не работает, так как память освобождается в самом аллокаторе smile 

Это сообщение отредактировал(а) Lazin - 2.10.2008, 14:53
PM MAIL Skype GTalk   Вверх
Любитель
Дата 2.10.2008, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Насчёт аллокатора - если написать аллокатор, юзающий salloc - разве не то получится?


--------------------
PM MAIL ICQ Skype   Вверх
J0ker
Дата 2.10.2008, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: нет
Всего: 14



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


--------------------
user posted image
PM MAIL   Вверх
Любитель
Дата 2.10.2008, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Цитата(J0ker @  2.10.2008,  16:30 Найти цитируемый пост)
Аргументов невозможности обеспечить безопасность типов 

С++ в этом плане не настолько уж и крут (не-не - разница есть, но не надо преувеличивать).


--------------------
PM MAIL ICQ Skype   Вверх
MAKCim
Дата 2.10.2008, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(UnrealMan @  2.10.2008,  14:02 Найти цитируемый пост)
Только не надо забывать, что реализуем мы деструктор всего один раз, а вызываться он должен для всех создаваемых в программе объектов. Сложность слежения за тем, чтобы деструктор был вызван всюду, где это необходимо, часто превосходит сложность написания самого деструктора.

сразу видно, на С ты не программировал  smile 
нет ничего сложного
есть объект A, есть функция для его создания и уничтожения
есть функция, использующая A
в ней есть блок завершения, в котором идет вызов функции уничтожения
переход на блок завершения идет через goto
блоков завершения может быть несколько, в зависимости от числа типов создаваемых объектов
располагаются последовательно в обратном созданию порядке
любая функция строится по такому правилу
в итоге нет ни утечек, ни сложностей для восприятия
 smile 

Цитата(UnrealMan @  2.10.2008,  14:02 Найти цитируемый пост)
Без тёплого и уютного жилья тоже можно жить. Бомжи вон как-то живут. Не хочешь составить им компанию? Для тебя ведь уровень жизни, видимо, не важен?

аналогия в корне не верна

Цитата(UnrealMan @  2.10.2008,  14:02 Найти цитируемый пост)
Вменяемый человек ради понимания того, как пользоваться библиотекой, руководствуется документацией к ней, а не её исходным кодом. 

а почему ты решил, что я на этом акцентирую внимание?  smile 


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

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


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: нет
Всего: 14



Цитата(Любитель @ 2.10.2008,  16:37)
Цитата(J0ker @  2.10.2008,  16:30 Найти цитируемый пост)
Аргументов невозможности обеспечить безопасность типов 

С++ в этом плане не настолько уж и крут (не-не - разница есть, но не надо преувеличивать).

я не преувеличиваю
C++ оставляет ВОЗМОЖНОСТЬ эту безопасность обойти, но если вам эта возожность понадобилась - ищите ошибки в проектировании, а язык тут совершенно не при чем.

Добавлено через 8 минут и 32 секунды
Цитата(MAKCim @  2.10.2008,  22:41 Найти цитируемый пост)
в ней есть блок завершения, в котором идет вызов функции уничтожения
переход на блок завершения идет через goto
блоков завершения может быть несколько, в зависимости от числа типов создаваемых объектов
располагаются последовательно в обратном созданию порядке
любая функция строится по такому правилу

Действительно, поразительно удобно  smile 

Народ, он ИМХО над нами издевается  smile 

кстати, а чтож вы на неудобные вопросы-то не отвечаете, а?




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


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


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

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



Цитата(J0ker @  2.10.2008,  23:13 Найти цитируемый пост)
Действительно, поразительно удобно

о вкусах не спорят
сразу видно, что тут на С мало кто программировал  smile 

Цитата(J0ker @  2.10.2008,  23:13 Найти цитируемый пост)
кстати, а чтож вы на неудобные вопросы-то не отвечаете, а?

давайте список, буду отвечать

Добавлено через 10 минут и 41 секунду
Цитата(J0ker @  2.10.2008,  23:13 Найти цитируемый пост)
Народ, он ИМХО над нами издевается

ничуть
я сам был раньше фанатом С++
пока не понял, что он того не стОит

Это сообщение отредактировал(а) MAKCim - 3.10.2008, 08:19


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

PM MAIL   Вверх
nerezus
Дата 3.10.2008, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

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



Цитата

GTK+?   
 А если надо что-то кросплатформенное?)
Тогда Qt.


Цитата

Верно, и некоторым людям в силу собственной лени к изучению новых технологий в программировании психологически проще убедить себя, что старые технологии мол и так работают достаточно эффективно, чем взяться за рассмотрение пугающе большого объёма материала. 
 Это одна из возможных причин.
Вторая причина - в потенциальной кривости не программиста, а языка.
Сравни C++ с Java. Только языки(не платформы).
Т.е. считай, что в джаве есть указатели(естественно они deprecated) и она компилится в натив.
Тебе не кажется, что тогда практически все бы выбрали Java(как и случилось с ентерпрайзом)?

Цитата

все "новшества" - это синтаксический сахар
 О да. Собственно как и любой язык - синтаксический сахар над бинарным кодом.
Только вот этот "синтаксический сахар" очень удобен ;)

P.S. До недавнего времени юзал C, теперь C++. Ибо Qt и классическое ООП(без него стало сложно). Ненавижу C++ за сложность(неоправданную).


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
UnrealMan
Дата 3.10.2008, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 0
Всего: 32



Цитата(MAKCim @  2.10.2008,  23:41 Найти цитируемый пост)
сразу видно, на С ты не программировал  

А ты что-нибудь посложнее Hello World на своём C программировал?

Цитата(MAKCim @  2.10.2008,  23:41 Найти цитируемый пост)
нет ничего сложного
есть объект A, есть функция для его создания и уничтожения
есть функция, использующая A
в ней есть блок завершения, в котором идет вызов функции уничтожения
переход на блок завершения идет через goto
блоков завершения может быть несколько, в зависимости от числа типов создаваемых объектов
располагаются последовательно в обратном созданию порядке
любая функция строится по такому правилу

Ну, надо же, как всё просто smile

Предположим, у нас есть два ресурса: первый захватывается объектом x, второй - объектом y:

Код
ResourceHandle acquire_resource();            // эта функция может выбросить исключение
void release_resource(ResourceHandle handle);

class SomeClass
{
public:
    SomeClass()  { m_handle = acquire_resource(); } // захватываем ресурс
    ~SomeClass() { release_resource(m_handle) }     // освобождаем ресурс
    void use_resource();                            // выполняет какие-то операции с ресурсом
    
private:
    ResourceHandle m_handle;
};

void f()
{
    SomeClass x;      // здесь может сгенерироваться исключение
    SomeClass y;      // здесь может сгенерироваться исключение
    x.use_resource(); // здесь может сгенерироваться исключение
    y.use_resource(); // здесь может сгенерироваться исключение
}

В случае неудачной попытки захватить какой-либо ресурс, либо неудачного отрабатывания метода use_resource надо выйти из функции f (освободив все захваченные ресурсы) и передать ошибку наверх. Перепиши этот код на C.

Цитата(MAKCim @  2.10.2008,  23:41 Найти цитируемый пост)
аналогия в корне не верна

Я так понял, ты теперь отказываешься от этого своего супер-аргумента "раз без шаблонов можно выжить, значит они не нужны"? smile

Цитата(MAKCim @  2.10.2008,  23:41 Найти цитируемый пост)
а почему ты решил, что я на этом акцентирую внимание?

А кто ж тебя знает, на чём ты там акцентировал внимание? Я всё-таки не телепат.

Цитата(MAKCim @  3.10.2008,  09:18 Найти цитируемый пост)
я сам был раньше фанатом С++

Когда речь заходит о фанатах, я в первую очередь вспоминаю о том, что фанатизм, как и всякое помешательство, свидетельствует скорее о психических отклонениях у человека, нежели о том, что он грамотный специалист в своём деле. Вот если б ты сказал, что был профессиональным программистом C++ (а не каким-то там фанатом), то мог бы создать хоть какую-то иллюзию того, что так оно и было smile 

Цитата(nerezus @  3.10.2008,  11:03 Найти цитируемый пост)
Сравни C++ с Java. 

Я не знаю Java и сравнивать их не стану (ибо предпочитаю говорить только о том, в чём, как я считаю, достаточно хорошо разбираюсь).
PM MAIL   Вверх
MAKCim
Дата 3.10.2008, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(UnrealMan @  3.10.2008,  11:50 Найти цитируемый пост)
Перепиши этот код на C.


Код

struct SomeClass
{
    ResourceHandle m_handle;
};

int use_resource(struct SomeClass *object)
{
...
}

int SomeClassInit(struct SomeClass *object)
{
    return object->m_handle = acquire_resource();
}

int SomeClassDestroy(struct SomeClass *object)
{
    return release_resource(object->m_handle);
}

void f()
{
    struct SomeClass x;
    struct SomeClass y;
    if (SomeClassInit(&x))
    {
        return;
    }
    if (SomeClassInit(&y))
    {
        goto destroy_x;
    }
    if (use_resource(&x))
    {
        goto destroy_y;
    }
    if (use_resource(&y))
    {
        goto destroy_y;
    }
destroy_y:
    SomeClassDestroy(&y);
destroy_x:
    SomeClassDestroy(&x);
}


Добавлено @ 12:17
Цитата(UnrealMan @  3.10.2008,  11:50 Найти цитируемый пост)
А ты что-нибудь посложнее Hello World на своём C программировал?

если это действительно вопрос, а не стеб, то да  smile 


Цитата(UnrealMan @  3.10.2008,  11:50 Найти цитируемый пост)
Я так понял, ты теперь отказываешься от этого своего супер-аргумента "раз без шаблонов можно выжить, значит они не нужны"?

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


Цитата(UnrealMan @  3.10.2008,  11:50 Найти цитируемый пост)
Когда речь заходит о фанатах, я в первую очередь вспоминаю о том, что фанатизм, как и всякое помешательство, свидетельствует скорее о психических отклонениях у человека, 

фанаты бывают разные
и зачастую уровень знаний фаната, так же как и любителя, превосходит оный т. н профессионала  smile

Добавлено через 11 минут и 20 секунд
UnrealMan
давай все же на личности не переходить
или по-другому ты дискуссию вести не умеешь?

Это сообщение отредактировал(а) MAKCim - 3.10.2008, 12:19


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

PM MAIL   Вверх
NebelDT
Дата 3.10.2008, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: -1
Всего: -10



Не ожидал что мне столько народу ответит, пасиб! smile

Добавлено через 4 минуты и 11 секунд
Не ожидал что мне столько народу ответит, пасиб! smile 
PM MAIL WWW YIM   Вверх
UnrealMan
Дата 3.10.2008, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 0
Всего: 32



Цитата(MAKCim @ 3.10.2008,  13:09)
Цитата(UnrealMan @  3.10.2008,  11:50 Найти цитируемый пост)
Перепиши этот код на C.


Код

struct SomeClass
{
    ResourceHandle m_handle;
};

int use_resource(struct SomeClass *object)
{
...
}

int SomeClassInit(struct SomeClass *object)
{
    return object->m_handle = acquire_resource();
}

int SomeClassDestroy(struct SomeClass *object)
{
    return release_resource(object->m_handle);
}

void f()
{
    struct SomeClass x;
    struct SomeClass y;
    if (SomeClassInit(&x))
    {
        return;
    }
    if (SomeClassInit(&y))
    {
        goto destroy_x;
    }
    if (use_resource(&x))
    {
        goto destroy_y;
    }
    if (use_resource(&y))
    {
        goto destroy_y;
    }
destroy_y:
    SomeClassDestroy(&y);
destroy_x:
    SomeClassDestroy(&x);
}

А каким чудом функция, вызвавшая f, узнает, что за ошибка произшла? Будем считать, что существует по меньшей мере две причины, по которой захват ресурса не может быть выполнен успешно, и то же самое будет в отношении использования use_resource. Нужно, чтобы в функции, вызывающей f, можно было распознать тип ошибки (т.е. конкретную причину сбоя).

Кстати, нулевой handle обычно свидетельствует о неудачном захвате ресурса, так что в if-ах следовало бы добавить отрицание.

Цитата(MAKCim @  3.10.2008,  13:09 Найти цитируемый пост)
тут больше подходит аналогия есть машина и нет машины
во втором случае я могу взять такси  

C больше походит на детский трёхколёсный велосипед, нежели на такси. Такси в определённом плане может быть ещё удобней, чем личное авто, ибо все тяготы, связанные с управлением машиной, уходом за ней, прохождением техосмотра и т.д. возьмут на себя специальные работники, осуществляющие и обслуживающие такого рода перевозки, а не пассажир, которому надо просто доехать из точки A в точку B. Это определённо не про C-программистов.

Цитата(MAKCim @  3.10.2008,  13:09 Найти цитируемый пост)
и зачастую уровень знаний фаната, так же как и любителя, превосходит оный т. н профессионала

Зачастую этого уровня знаний хватает только на разжигание дурацких холиваров на форумах.

Цитата(MAKCim @  3.10.2008,  13:09 Найти цитируемый пост)
давай все же на личности не переходить
или по-другому ты дискуссию вести не умеешь?

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

Цитата(MAKCim @  30.9.2008,  14:08 Найти цитируемый пост)
я даже больше скажу, и для сложных программ С++ не лучше  

Если б ты добавил "лично для меня не лучше", к тебе б претензий не было. Ну, нравится тебе извращаться со всеми этими макросами, void* и goto, извращайся дальше сколько угодно. Но тебе зачем-то понадобилось провокационно такое уточнение опустить и снизвести тему в холивар:

Цитата(MAKCim @  30.9.2008,  14:08 Найти цитируемый пост)
(можете начинать набрасываться на меня) 

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

Это сообщение отредактировал(а) UnrealMan - 3.10.2008, 14:20
PM MAIL   Вверх
nerezus
Дата 3.10.2008, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

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



Цитата

фанаты бывают разные
 Признак фанатизма - необъективность. А необъективность мешает правильно оценить вещи. Как следствие - неверно принятое решение по заданным критериям оценки.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
MAKCim
Дата 3.10.2008, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(UnrealMan @  3.10.2008,  14:09 Найти цитируемый пост)
А каким чудом функция, вызвавшая f, узнает, что за ошибка произшла?

а, ну тут просто описка
функция должна int возвращать (или любым другим способом сигнализировать об ошибке)


Цитата(UnrealMan @  3.10.2008,  14:09 Найти цитируемый пост)
Кстати, нулевой handle обычно свидетельствует о неудачном захвате ресурса, так что в if-ах следовало бы добавить отрицание.

опять описка

главное, что общая идея в коде прослеживается

Цитата(UnrealMan @  3.10.2008,  14:09 Найти цитируемый пост)
C больше походит на детский трёхколёсный велосипед, нежели на такси. Такси в определённом плане может быть ещё удобней, чем личное авто, ибо все тяготы, связанные с управлением машиной, уходом за ней, прохождением техосмотра и т.д. возьмут на себя специальные работники, осуществляющие и обслуживающие такого рода перевозки, а не пассажир, которому надо просто доехать из точки A в точку B. Это определённо не про C-программистов.

аналогия раскрывается следующем образом
машина = шаблоны
нет машины = С
есть машина = С++
возьму такси = сделаю по-другому
в итоге и в первом случае, и во втором я доеду до пункта Б = решить задачу
 smile 

Цитата(UnrealMan @  3.10.2008,  14:09 Найти цитируемый пост)
Зачастую этого уровня знаний хватает только на разжигание дурацких холиваров на форумах.

это тонкий намек или мне кажется?

Цитата(UnrealMan @  3.10.2008,  14:09 Найти цитируемый пост)
Но тебе зачем-то понадобилось провокационно такое уточнение опустить и снизвести тему в холивар:

в холиварах тоже нужно вести себя корректно

Цитата(UnrealMan @  3.10.2008,  14:09 Найти цитируемый пост)
Выдавать свои личные мазохистские предпочтения за всеобщие, а потом обижаться при переходе на личности - это, видимо, и есть правильный подход к ведению дискуссий, по-твоему?

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

Добавлено через 1 минуту и 37 секунд
Цитата(nerezus @  3.10.2008,  14:14 Найти цитируемый пост)
Признак фанатизма - необъективность. А необъективность мешает правильно оценить вещи. Как следствие - неверно принятое решение по заданным критериям оценки. 

это к чему?
определение фанатизма?


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

PM MAIL   Вверх
nerezus
Дата 3.10.2008, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

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



Цитата

это к чему?
определение фанатизма?
 Нет. Его отрицательные качества.

Кстати недавно привели пример, у тебя кода при переписывании стало больше в несколько раз.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
MAKCim
Дата 3.10.2008, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(nerezus @  3.10.2008,  16:08 Найти цитируемый пост)
Кстати недавно привели пример, у тебя кода при переписывании стало больше в несколько раз. 

от этого он стал менее понятным?


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

PM MAIL   Вверх
UnrealMan
Дата 3.10.2008, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 0
Всего: 32



Цитата(MAKCim @  3.10.2008,  15:47 Найти цитируемый пост)
а, ну тут просто описка

Просто описка? А на то, что размер кода станет ещё больше, мы внимания не обращаем? smile 

Цитата(MAKCim @  3.10.2008,  15:47 Найти цитируемый пост)
аналогия раскрывается следующем образом
машина = шаблоны
нет машины = С
есть машина = С++
возьму такси = сделаю по-другому
в итоге и в первом случае, и во втором я доеду до пункта Б = решить задачу

Равноценной замены шаблонам в C нет. Более совершенной замены - тем более. Так что не надо тут преувеличивать насчёт такси: максимум, на что ты сможешь рассчитывать, это на трёхколёсный велосипед, позаимствованный у девочки Маши, либо на свои собственные ножки.

Цитата(MAKCim @  3.10.2008,  15:47 Найти цитируемый пост)
во-первых, почему мои предпочтения - мазохистские?

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

Стремление выбрать из двух способов достижения цели наиболее затратный - это мазохизм. Для серьёзных коммерческих проектов такой мазохизм убыточен.

Цитата(MAKCim @  3.10.2008,  15:47 Найти цитируемый пост)
извини, но пока всемирный вопрос на тему сабжа никто не проводил и результатов у нас нет

И вопросы проектирования крупных программных систем конечно же никто никогда не рассматривал. В каменном веке живём.

Цитата(MAKCim @  3.10.2008,  15:47 Найти цитируемый пост)
во-вторых, ты только что сам начал выдавать свои взгляды за всеобщие  

Что ж, я рад, что до этого высказывал только всеобщие взгляды smile
А теперь, пожалуйста, приведи пример, где в предыдущем посте я несправедливо начал выдавать свои взгляды за всеобщие smile 

Цитата(MAKCim @  3.10.2008,  15:47 Найти цитируемый пост)
в-третьих, я твой уровень знаний/профессионализм/... ни прямо, ни косвенно не затрагивал

Насчёт косвенности это ты зря упомянул. Немногим ранее ты написал следующее:

Цитата(MAKCim @ 1.10.2008,  09:27)
Цитата(bsa @  1.10.2008,  08:23 Найти цитируемый пост)
Я, лично, считаю, что прикладной софт нужно писать на С++ - сильная экономия времени.

я считаю, что одинаково
главное, чтобы человек был профессионал в своем деле  smile

Между строк тут так и читается: "а если у вас получается не одинаково, то никакие вы не профессионалы в C".

Конечно, тут можно было бы упрекнуть меня в вольной интерпретации, однако же эта твоя пафосная фраза без приведённого мной подтекста, теряет всякий смысл. Тут уж что-то одно: либо человек, который не в силах вести разработку на C так же эффективно, как на C++, недостаточно профессионал в C, либо ты просто ляпнул что-то не то.
 
Цитата(MAKCim @  3.10.2008,  15:47 Найти цитируемый пост)
мы все-таки в религиозных войнах

Мне довелось участвовать в десятках религиозных спорах, причём религиозных в прямом смысле, т.к. предметом обсуждения в них было "христианство vs атеизм". Честно говоря, поражён, до чего уровень твоих аргументов похож на оный у христиан. Ты, случаем, не один из них?
 smile 

Цитата(MAKCim @  3.10.2008,  17:23 Найти цитируемый пост)
от этого он стал менее понятным? 

Его как минимум сложнее читать и модифицировать.
PM MAIL   Вверх
nerezus
Дата 3.10.2008, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

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



Цитата

от этого он стал менее понятным?
 От этого он стал больше.
Т.е. на его написание, поддержку, разбор другими программистами и модификацию уйдет больше ресурсов.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
J0ker
Дата 3.10.2008, 17:22 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: нет
Всего: 14



Цитата(MAKCim @  3.10.2008,  08:18 Найти цитируемый пост)
о вкусах не спорят

ну за стандарт вкуса принимают обычно не вкус небольшой доли извращенцев (которая всегда присутствует в обществе), а вкусы большинства нормальных пиплов  smile 
а большинство нормальных пиплов предпочитают день потерять (досконально изучить хороший но сложный инструмент), а потом за пять минут долететь (писать совместимые программы гораздо быстрее, проще и эффективнее)
Цитата(MAKCim @  3.10.2008,  08:18 Найти цитируемый пост)
сразу видно, что тут на С мало кто программировал

не волнуйтесь, мы и на ассемблере лабаем  smile 
Цитата(MAKCim @  3.10.2008,  08:18 Найти цитируемый пост)
давайте список, буду отвечать

да я уже раза 3 его давал
1. типобезопасность
2. решение 1. путем создания макросов которые:
   2a. неотлаживаемы в принципе
   2b. непозволяют конкурентное использование разных библиотек в силу конфликта имен и несовместимости
Цитата(MAKCim @  3.10.2008,  08:18 Найти цитируемый пост)
я сам был раньше фанатом С++
пока не понял, что он того не стОит

-- А вы детей любите?
-- Нет...
-- Ааааа, вы просто готовить их правильно не умеете!!!
 smile 

Так и скажите, что вам просто лень изучать сложный инструмент  smile

Добавлено через 3 минуты и 8 секунд
Цитата(nerezus @  3.10.2008,  10:03 Найти цитируемый пост)
Ненавижу C++ за сложность(неоправданную). 

она оправдана близостью к железу



--------------------
user posted image
PM MAIL   Вверх
vinter
  Дата 3.10.2008, 17:33 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


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

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



Цитата(J0ker @  3.10.2008,  18:22 Найти цитируемый пост)
ну за стандарт вкуса принимают обычно не вкус небольшой доли извращенцев (которая всегда присутствует в обществе), а вкусы большинства нормальных пиплов 

вкусовых стандартов не существует  smile 

MAKCim, сразу видно соскчилсмя по РВ  smile 
Цитата(UnrealMan @  3.10.2008,  18:08 Найти цитируемый пост)
Ты, случаем, не один из них?

ты считаешь быть христианином это что-то плохое?


--------------------
Мой блог
PM MAIL WWW   Вверх
J0ker
Дата 3.10.2008, 17:44 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: нет
Всего: 14



Цитата(MAKCim @  3.10.2008,  14:47 Найти цитируемый пост)
аналогия раскрывается следующем образом
машина = шаблоны
нет машины = С
есть машина = С++
возьму такси = сделаю по-другому
в итоге и в первом случае, и во втором я доеду до пункта Б = решить задачу

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

Добавлено через 3 минуты и 52 секунды
Цитата(vinter @  3.10.2008,  17:33 Найти цитируемый пост)
вкусовых стандартов не существует

а я и не писал, чтосуществует, я писал "принимается"
это вопрос рациональности, а не искусства

Цитата(vinter @  3.10.2008,  17:33 Найти цитируемый пост)
ты считаешь быть христианином это что-то плохое? 

скорее глупое
слепая вера - один из анти-паттернов  smile 


--------------------
user posted image
PM MAIL   Вверх
vinter
Дата 3.10.2008, 17:58 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


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

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



Цитата(J0ker @  3.10.2008,  18:44 Найти цитируемый пост)
скорее глупоеслепая вера - один из анти-паттернов

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

Добавлено через 1 минуту и 59 секунд
Цитата(J0ker @  3.10.2008,  18:44 Найти цитируемый пост)
это вопрос рациональности

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


--------------------
Мой блог
PM MAIL WWW   Вверх
Любитель
Дата 3.10.2008, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Цитата(J0ker @  3.10.2008,  17:22 Найти цитируемый пост)
она оправдана близостью к железу

Сложность С++ оправдана близостью к железу?! Сложность С++ ничем не оправданна - это просто исторический факт. А С что дальше от железа что ли  smile 

Цитата(J0ker @  3.10.2008,  17:44 Найти цитируемый пост)
скорее глупое
слепая вера - один из анти-паттернов  

Ну уж до такого можно было бы и не опускаться ;) Давай не будем отходить от "технических" вопросов smile


--------------------
PM MAIL ICQ Skype   Вверх
nerezus
Дата 3.10.2008, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

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



Цитата

ты считаешь быть христианином это что-то плохое? 
 Если слепо верить "так мне указали" — то плохо.
Если прийти к вере основываясь на изысканиях, логике и прочих рациональных факторах — то хорошо.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Любитель
Дата 3.10.2008, 18:47 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Цитата(nerezus @  3.10.2008,  18:34 Найти цитируемый пост)
Если прийти к вере основываясь на изысканиях, логике и прочих рациональных факторах — то хорошо. 

Готов поспорить на самом деле (не только насчёт христианства - а насчёт утверждения, что логика хорошо, а вера плохо), но этож оффтоп уже пошёл. smile


--------------------
PM MAIL ICQ Skype   Вверх
J0ker
Дата 3.10.2008, 19:49 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: нет
Всего: 14



Цитата(vinter @  3.10.2008,  17:58 Найти цитируемый пост)
на самом деле ты уже не прав

знаете, пытались меня всякими пресуппозициями наколоть, но чтоб так нагло - это впервые - зачет  smile (добавил себе в подпись  smile )

Цитата(vinter @  3.10.2008,  17:58 Найти цитируемый пост)
Надо понимать, что не все верующие фанатики, и уж тем более не все крещенные христьяне являются фанатиками.

а про фанатиков я даже и не говорю
 
Цитата(vinter @  3.10.2008,  17:58 Найти цитируемый пост)
Если кто-то чего-то непонимает и не признает, это не значит, что этого нет.

проблема в том, что от нас требуют признания без понимания - это постулат всех современных религий - есть это или этого нет - вопрос В ПРИНЦИПЕ не ставится (причины я могу вам рассказать отдельно ибо это обширная тема)

Цитата(vinter @  3.10.2008,  17:58 Найти цитируемый пост)
рациональности во вкусе быть не может

не передергивайте - я говорю НЕ о рациональности вкуса, а о принятии стандартом вкуса большинства - в коммерческом производстве это определенно рационально

Цитата(Любитель @  3.10.2008,  18:24 Найти цитируемый пост)
Сложность С++ ничем не оправданна - это просто исторический факт.

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

Цитата(Любитель @  3.10.2008,  18:24 Найти цитируемый пост)
Давай не будем отходить от "технических" вопросов  smile 

а разве анти-паттерны это не технический вопрос?  smile 


Цитата(Любитель @  3.10.2008,  18:47 Найти цитируемый пост)
Готов поспорить на самом деле (не только насчёт христианства - а насчёт утверждения, что логика хорошо, а вера плохо)

ну давйте попорим - там где-то и раздел наверное подходящий есть
только вот сложно о чем-то спорить с тем, кто не признает логических доводов  smile 


Это сообщение отредактировал(а) J0ker - 3.10.2008, 20:44


--------------------
user posted image
PM MAIL   Вверх
maxim1000
Дата 3.10.2008, 20:25 (ссылка) |    (голосов:5) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: нет
Всего: 110



Ох... ну и мне, что ли поучаствовать в религиозных войнах smile

Все соображения основаны на личном опыте ну и немного на опыте окружающих и прочитанных статьях всяких.

Языки в том виде, в котором они сейчас есть, появились не просто так. У каждого популярного языка программирования есть своё сообщество. И объединяет их набор того, что они ценят в процессе программирования, что и определяет критерии развития того или иного языка. И получается, что даже решая одну и ту же задачу, программисты на разных языках будут решать несколько разные задачи.

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

Взять, например, C++ и С (ниже - не полный список, а только примеры различий):

Первым программистам нравится сбрасывать на компилятор (т.е. compile-time) кучу действий, чтобы быть уверенными, что ничего не забыто.

Вторым программистам тупо не нравится, когда за безобидной скобкой "}" может скрываться огромная куча кода в деструкторах, которая закрывает подключения к БД, сбрасывает содержимое буферов в файл и вообще выключает комп smile

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

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

Но сейчас границы между областями размыты. На C пишут графические приложения, на С++ (да и на Java, если уж на то пошло) - программы для мобильных телефонов. Но люди подходят к задачам всё равно со своими критериями, и то, что они выбирают "свой" язык, вполне естественно. И потому сложно объяснить программисту на C, почему ему нужны шаблоны - они ему не нужны, т.к. критерии у него такие, что препроцессор вполне для них подходит. И программисту на C++ - что видеть весь код, который выполняется именно там, где он выполняется, может быть важным.

Может, когда-то и сделают язык, который удовлетворяет и те, и те критерии (да и от Java можно немало взять, не говоря уже о функциональных языках).

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


Вот где-то так...
Изо всех сил старался быть объективным, хотя сам считаю, что тут и спорить не о чем - в C даже нельзя сделать такой банальной вещи, как посчитать факториал в compile-time  smile 


--------------------
qqq
PM WWW   Вверх
J0ker
Дата 3.10.2008, 20:37 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: нет
Всего: 14



Цитата(maxim1000 @  3.10.2008,  20:25 Найти цитируемый пост)
Вторым программистам тупо не нравится, когда за безобидной скобкой "}" может скрываться огромная куча кода в деструкторах, которая закрывает подключения к БД, сбрасывает содержимое буферов в файл и вообще выключает комп

именно поэтому типы в C++ разделяются на Основные (они-же базовые, фундаментальные, POD), Агрегаты (ониже PODS), и Классы. "Скрываться" это может только от ленивого.


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


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 0
Всего: 32



Цитата(maxim1000 @  3.10.2008,  21:25 Найти цитируемый пост)
Вторым программистам тупо не нравится, когда за безобидной скобкой "}" может скрываться огромная куча кода в деструкторах

Ключевое слово здесь "тупо" smile С тем же успехом можно недовольствоваться сокрытием кода за вызовом функции, которая этот код содержит.

Цитата(maxim1000 @  3.10.2008,  21:25 Найти цитируемый пост)
и там, и там за чем-то нужно следить, у одних лучше получается следить за неявно вызываемым кодом

Маленькое уточнение: в большинстве случаев за вызовом деструкторов следить не нужно вообще.

Цитата(maxim1000 @  3.10.2008,  21:25 Найти цитируемый пост)
другие не могут рисковать, чтобы в real-time задаче вызывался код, которого не видно

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

Цитата(maxim1000 @  3.10.2008,  21:25 Найти цитируемый пост)
оценка времени начинает быть нетривиальным занятием

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

Цитата(maxim1000 @  3.10.2008,  21:25 Найти цитируемый пост)
И потому сложно объяснить программисту на C, почему ему нужны шаблоны - они ему не нужны, т.к. критерии у него такие, что препроцессор вполне для них подходит.

Ну да, каких только критериев не встретишь у C-программимазохистов smile 

Цитата(maxim1000 @  3.10.2008,  21:25 Найти цитируемый пост)
И программисту на C++ - что видеть весь код, который выполняется именно там, где он выполняется, может быть важным.

Руководства правилами языка вполне достаточно.

Цитата(maxim1000 @  3.10.2008,  21:25 Найти цитируемый пост)
в C даже нельзя сделать такой банальной вещи, как посчитать факториал в compile-time

Интересно было бы узнать, где имеет смысл применять такой подсчёт.

Это сообщение отредактировал(а) UnrealMan - 3.10.2008, 22:14
PM MAIL   Вверх
maxim1000
Дата 4.10.2008, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: нет
Всего: 110



Цитата(UnrealMan @  3.10.2008,  21:58 Найти цитируемый пост)
Интересно было бы узнать, где имеет смысл применять такой подсчёт.

smile
эту фразу стоит рассматривать только в контексте с смайликом, который шёл после неё  smile - Религиозные Войны всё-таки

--------

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

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

Цитата(J0ker @  3.10.2008,  20:37 Найти цитируемый пост)
именно поэтому типы в C++ разделяются на Основные (они-же базовые, фундаментальные, POD), Агрегаты (ониже PODS), и Классы. "Скрываться" это может только от ленивого

Большинство программ развиваются и видоизменяются. В процессе это развития типы могут переходить из одной группы в другую. Например писали функцию для double, а потом стали использовать complex. Писали для структуры, которая содержит координаты точки x,y,z в 3d на какой-то поверхности, перешли на параметризированный вид x,y,f(x,y), а потом и вообще на чтение из какого-то большого файла вместо вычисления f(x,y).

[кривовато, конечно, но дальше продолжение ответа и в том числе ответ на реплики]
Цитата(UnrealMan @  3.10.2008,  21:58 Найти цитируемый пост)
С тем же успехом можно недовольствоваться сокрытием кода за вызовом функции, которая этот код содержит.

Цитата(UnrealMan @  3.10.2008,  21:58 Найти цитируемый пост)
Вот незадача: исходного кода любой функции (хоть явно она вызывается, хоть неявно) не видно в месте её вызова

И для C++ абсолютно нормально, что знание о том, как объект будет удалён находится не возле "}", а в месте объявления объекта (ну а точнее ссылка на это знание). Это отличается от хронологического порядка, часто встречающегося в программировании - если что-то идёт после чего-то другого, то и выполнено оно будет позже. И я вполне мог допустить, что это не для всех комфортно.

Цитата(UnrealMan @  3.10.2008,  21:58 Найти цитируемый пост)
Я очень сомневаюсь, что медитация над вызовами функций, очищающих ресурсы, способна привести к решению внесения неких изменений, благодаря которым будет достигнуто заметное повышение производительности.

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

Цитата(UnrealMan @  3.10.2008,  21:58 Найти цитируемый пост)
Руководства правилами языка вполне достаточно.

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

Это сообщение отредактировал(а) maxim1000 - 4.10.2008, 00:56


--------------------
qqq
PM WWW   Вверх
UnrealMan
Дата 4.10.2008, 02:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 0
Всего: 32



Цитата(maxim1000 @  4.10.2008,  01:50 Найти цитируемый пост)
Это отличается от хронологического порядка, часто встречающегося в программировании - если что-то идёт после чего-то другого, то и выполнено оно будет позже. И я вполне мог допустить, что это не для всех комфортно.

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

Цитата(maxim1000 @  4.10.2008,  01:50 Найти цитируемый пост)
Необходимые времена жизни объектов не всегда укладываются в идею стека, поэтому и приходится либо расширять их и использовать стековые объекты, либо переходить на ручное управление временем жизни.

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

Цитата(maxim1000 @  4.10.2008,  01:50 Найти цитируемый пост)
В таких случаях второй вариант вполне может обеспечить прирост эффективности не только по времени, но и по использованию памяти. И не всегда его можно заметить если алгоритм уже описан в терминах стековых объектов.

Собственно, за счёт чего может быть достижим такой прирост? За счёт избавления от копирования объекта? Дык копирование достаточно несложно отслеживается, т.к. ситуации, когда оно осуществляется, вполне чётко очерчены рамками языка.

Цитата(maxim1000 @  4.10.2008,  01:50 Найти цитируемый пост)
Более того, сами правила - всего лишь следствие тех или иных ценностей

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

Это сообщение отредактировал(а) UnrealMan - 4.10.2008, 02:06
PM MAIL   Вверх
kemiisto
  Дата 4.10.2008, 03:05 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 3
Всего: 160



Написано много, долго читал, разделяю точку зрения MAKCim'а. Подолью масла в огонь... Давайте-ка, обратимся к истории вопроса. smile  Итак, по-порядку...

Начале 1970-х годов - Кеном Томпсоном и Денисом Ритчи создают C. Для разработки и последующего использования в операционной системе UNIX.

1983 - вышеупомянутые получают Премия Тьюринга (в сфере информационных технологий эта премия имеет статус, аналогичный Нобелевской премии в академических науках) (внимание!):
Цитата
For their development of generic operating systems theory and specifically for the implementation of the UNIX operating system.
За разработку общей теории операционных систем и в частности за создание Unix.

Конечно же, не будь C - не было бы и UNIX! С ценят за его эффективность и он является самым популярным языком для создания системного программного обеспечения. И всё же, почему так важно, что премию дали не за C? А потому, что годом позже...

1984 - Никлаус Вирт получает Премию Тьюринга (опять же внимание!)
Цитата
For developing a sequence of innovative computer languages, EULER, ALGOL-W, MODULA and PASCAL.
За разработку серии инновационных компьютерных языков, ЭЙЛЕР, ALGOL-W, МОДУЛА и ПАСКАЛЬ.

Если бы мы обсуждали "холивар" C vs PASCAL, я бы поставил на этом точку. Но я продолжу...

Начало 80-х годов - Бьярне Строуструп придумал ряд усовершенствований к языку С под собственные нужды (как утверждает Народная Энциклопедия).

1998 - ратифицирован первый международный стандарт языка С++.

2001 - знаковое событие - Ole-Johan Dahl и Kristen Nygaard (я позволю себе оставить имена в оригинале, ибо транскрипций много) награждаются Премией Тьюринга:
Цитата
For ideas fundamental to the emergence of object-oriented programming, through their design of the programming languages Simula I and Simula 67.
За идеи, фундаментальные для развития объектно-ориентированного программирования, возникшие в ходе разработки языков программирования Simula I и Simula 67.

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

2003 год ознаменовался не только выходом нынешней версия стандарта С++ но и вручением Премии Тьюринга Алану Кэю за:
Цитата
За многочисленные новаторские идеи, которые легли в основу современных объектно-ориентированных языков, руководство командой разработчиков языка Smalltalk и за фундаментальный вклад в развитие области ПК.
For pioneering many of the ideas at the root of contemporary object-oriented programming languages, leading the team that developed Smalltalk, and for fundamental contributions to personal computing.

Да будет вам известно, что первая версия Smalltalk'а была разработана в 1971. Страуструп в это время университет то не закончил, а люди в Xerox PARC уже вовсю мыслили объектами! Почитайте хоть немного вот здесь и вы, возможно, многое поймёте...

2005 - в очередной раз Премия Тьюринга вручается за разработку ЯП. На этот раз Питер Наур удостоился этой чести:
Цитата
За фундаментальный вклад в проектирование языков программирования и создание языка Алгол 60, а также в проектирование компиляторов, и в искусство и технику компьютерного программирования.
For fundamental contributions to programming language design and the definition of Algol 60, to compiler design, and to the art and practice of computer programming.


А как же Страуструп? Не удостоили. Забыли? Очередь не дошла? А может, попросту, не достоин?! 

Ещё можно почитать про Oberon. Например, здесь. Обратите внимание вот на что. Вирт постепенно упрощал и до сих пор упрощает синтаксис (убирая элементы, которые, оказались ненужными, либо вызывали неоправданное усложнение реализации компилятор). А мощь языка только растёт! Oberon поддерживает ООП не множа сущности (смотри расширяемые записи), описание языка занимает страницу, производительность на уровне C! Так ещё и есть сборка мусора! А что делают наши старые знакомые-датчане? Первый (Страуструп) усложнает С настолько, что:
Цитата
В книге «Дизайн и эволюция языка C++» (ISBN 0-201-54330-3) Бьёрн Страуструп описывает некоторые правила, которые он использовал при проектировании Си++. Знание этих правил может помочь понять, почему Си++ такой, каким он стал. Вот некоторые из этих правил (подробности можно найти в книге «Дизайн и эволюция языка C++»).

Си++:

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

Я после третьего правила читать не мог! "Плакалъ"! smile  Это, вообще, здравомыслящий человек написал? smile 

Второй (Хейлсберг) поступает аналогично с PASCAL. Правда, потом пытается (и относительно небезуспешно) иправить ошибки первого под крылом MS... Так что, можно реабилитировать! smile 

Вот, как то так...


Это сообщение отредактировал(а) kemiisto - 4.10.2008, 03:05


--------------------
PM MAIL WWW GTalk Jabber   Вверх
J0ker
Дата 4.10.2008, 03:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: нет
Всего: 14



Цитата(maxim1000 @  4.10.2008,  00:50 Найти цитируемый пост)
Например писали функцию для double, а потом стали использовать complex. Писали для структуры, которая содержит координаты точки x,y,z в 3d на какой-то поверхности, перешли на параметризированный вид x,y,f(x,y), а потом и вообще на чтение из какого-то большого файла вместо вычисления f(x,y).

тот, кто делает рефакторинг кода должен понимать разницу между типами типов (пардон за тафтологию). Если он этого НЕ понимает, то тут проблема не в сложности языка, а в некомпетентности программиста.

Добавлено через 3 минуты и 52 секунды
Цитата(maxim1000 @  4.10.2008,  00:50 Найти цитируемый пост)
Это отличается от хронологического порядка, часто встречающегося в программировании - если что-то идёт после чего-то другого, то и выполнено оно будет позже. И я вполне мог допустить, что это не для всех комфортно.

ну на этом фоне изуверства MAKCim'а с goto уже совсем не комильфо  smile 


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


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: нет
Всего: 14



kemiisto, кипешь не понят
итак понятно, что премии (в том числе и нобелевские) вручают намного позже факта
потом, никто-же не утверждает, что C++ лучший и первый ОО язык - вопрос в приемуществе C++ конкрено над C
и потом, пользуясь вашим-же сравнением, по аналогии - Эйнштейну нобелевку вручили вовсе не за Теорию Относительности - так что, порешим значение ТО в современной физике, выражаясь юридическим языком, ничтожным?  smile 


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


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: нет
Всего: 110



Цитата(UnrealMan @  4.10.2008,  02:02 Найти цитируемый пост)
Допустим, "комфорт", связанный с видением всей последовательности операций в соответствующем порядке представляет собой какую-то ценность. Возникает резонный вопрос: какой ценой он достигается? Во-первых, тело функции становится длиннее, а в более длинных функциях менее удобно ориентироваться. Во-вторых, это неизбежно провоцирует ошибки: иногда функцию, заменяющую деструктор, либо вообще забывают вызвать, либо с перепугу вызывают дважды (если функция большая, то такую ситуацию можно и не заметить). Довольно дорогостоящий "комфорт", однако.

суть в том, что у них другой "курс обмена" одних сложностей на другие (при чём мы не считаем сложностями первое, а они - второе)

Цитата(UnrealMan @  4.10.2008,  02:02 Найти цитируемый пост)
Собственно, за счёт чего может быть достижим такой прирост? За счёт избавления от копирования объекта? Дык копирование достаточно несложно отслеживается, т.к. ситуации, когда оно осуществляется, вполне чётко очерчены рамками языка.

Ну, пример придумать можно:
есть у нас объекты A, B, C (пусть они переданы в функцию)
потом мы делаем преобразование f(A, B, C), которое даёт нам объект D
а потом - преобразование g(B, C, D), которое даёт нужный результат
объект A на момент второго преобразования уже не нужен, к тому же он занимает много памяти, которая очень нужна для выполнения g. Вот и становится полезно удалить его вручную до вызова g.
Конечно, здесь можно придумать какие-то дополнительные стековые объекты, и для программиста на C++ это может оказаться даже полностью естественно и просто, но что может быть проще delete A перед вызовом g? smile
(да, такая организация программы может потянуть кучу потенциальных проблем, которых мы привыкли избегать (в смысле решать заранее), но и ценность этой простоты сложно отрицать).

Добавлено через 4 минуты и 17 секунд
Цитата(J0ker @  4.10.2008,  03:58 Найти цитируемый пост)
ну на этом фоне изуверства MAKCim'а с goto уже совсем не комильфо

ну, там они, насколько я заметил, ведут себя вполне хронологически - наверх не переходят
впрочем, там другие проблемы - если в функции будет две ветки if'а, в каждой из которых выделяются свои ресурсы, которые нужно будет освободить, такое решение уже не очень подойдёт

Это сообщение отредактировал(а) maxim1000 - 4.10.2008, 10:49


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


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


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

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



Цитата(UnrealMan @  3.10.2008,  17:08 Найти цитируемый пост)
Просто описка? А на то, что размер кода станет ещё больше, мы внимания не обращаем? 

дело не в количестве, а в качестве
бывает, код длиной в 5 строчек, труден для восприятия


Цитата(UnrealMan @  3.10.2008,  17:08 Найти цитируемый пост)
Равноценной замены шаблонам в C нет. Более совершенной замены - тем более. Так что не надо тут преувеличивать насчёт такси: максимум, на что ты сможешь рассчитывать, это на трёхколёсный велосипед, позаимствованный у девочки Маши, либо на свои собственные ножки.

доехать до пункта Б = решить задачу
и С без шаблонов, и С++ с шаблонами доедут до пункта Б
 smile 
шаблоны - это не панацея, есть туева хуча языков без шаблонов, тот же Python к примеру
я согласен, что типобезопасность будет снижена, но при ведении грамотной документации и наличии прямых рук вероятность ошибок достаточно низка


Цитата(UnrealMan @  3.10.2008,  17:08 Найти цитируемый пост)
И вопросы проектирования крупных программных систем конечно же никто никогда не рассматривал. В каменном веке живём.

объектный подход != ЯП
ядро Linux - крупный програмный проект?  smile 
VIM - крупный програмный проект?
EMACS - крупный програмный проект?
Python - крупный програмный проект?
GTK - крупный програмный проект?
...


Цитата(UnrealMan @  3.10.2008,  17:08 Найти цитируемый пост)
Стремление выбрать из двух способов достижения цели наиболее затратный - это мазохизм

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


Цитата(UnrealMan @  3.10.2008,  17:08 Найти цитируемый пост)
Что ж, я рад, что до этого высказывал только всеобщие взгляды 

если ты умный человек, ты понял, о чем я  smile 

Цитата(UnrealMan @  3.10.2008,  17:08 Найти цитируемый пост)
А теперь, пожалуйста, приведи пример, где в предыдущем посте я несправедливо начал выдавать свои взгляды за всеобщие

справедливость - не контекстно-независимый концепт
здесь мы ни о чем не договоримся
Цитата(UnrealMan @  3.10.2008,  14:09 Найти цитируемый пост)
Выдавать свои личные мазохистские предпочтения за всеобщие


Цитата(UnrealMan @  3.10.2008,  17:08 Найти цитируемый пост)
Между строк тут так и читается: "а если у вас получается не одинаково, то никакие вы не профессионалы в C".

именно, НО
заметь, тут нет никакого намека на UnrealMan

тут общий тезис, никого конкретно не затрагивающий

у тебя же

Цитата(UnrealMan @  2.10.2008,  14:02 Найти цитируемый пост)
Бомжи вон как-то живут. Не хочешь составить им компанию? Для тебя ведь уровень жизни, видимо, не важен?


Цитата(UnrealMan @  2.10.2008,  14:02 Найти цитируемый пост)
А кто, собственно, требует читать исходники Boost? smile Вменяемый человек ради понимания того, как пользоваться библиотекой, руководствуется документацией к ней, а не её исходным кодом.


Цитата(UnrealMan @  3.10.2008,  11:50 Найти цитируемый пост)
А ты что-нибудь посложнее Hello World на своём C программировал?


Цитата(UnrealMan @  3.10.2008,  11:50 Найти цитируемый пост)
Когда речь заходит о фанатах, я в первую очередь вспоминаю о том, что фанатизм, как и всякое помешательство, свидетельствует скорее о психических отклонениях у человека, нежели о том, что он грамотный специалист в своём деле.

тут прокомментирую
по отношению к другому фанат может быть необъективным, но об объекте фанатизма он осведомлен в достаточной степени, чтобы быть "грамотным специалистом в своем деле"

Цитата(UnrealMan @  3.10.2008,  11:50 Найти цитируемый пост)
то мог бы создать хоть какую-то иллюзию того, что так оно и было



Цитата(UnrealMan @  3.10.2008,  17:08 Найти цитируемый пост)
Его как минимум сложнее читать и модифицировать. 

опять таки, смотря кому
С приграммисту легко, С++ программисту, возможно, тяжело, обратное тоже верно


Цитата(J0ker @  3.10.2008,  17:22 Найти цитируемый пост)
не волнуйтесь, мы и на ассемблере лабаем

видели мы ууровень лаб  smile  (без обид, никого из здесь присутствующих я не имею в виду, просто лабы и реальное программирование несколько отличаются)


Цитата(J0ker @  3.10.2008,  17:22 Найти цитируемый пост)
типобезопасность

да ниже (читай этот пост сначала, я уже писал об этом)


Цитата(J0ker @  3.10.2008,  17:22 Найти цитируемый пост)
неотлаживаемы в принципе

уточни, что подразумевается под отладкой


Цитата(J0ker @  3.10.2008,  17:22 Найти цитируемый пост)
непозволяют конкурентное использование разных библиотек в силу конфликта имен и несовместимости

префиксы/суффиксы имен


Цитата(J0ker @  3.10.2008,  17:22 Найти цитируемый пост)
Так и скажите, что вам просто лень изучать сложный инструмент

я С++ знаю  smile 
может это и не показатель (скорее всего), но комодераторами тематических разделов на винграде просто так не назначают
я просто не знаю другого более менее объективного показателя, с которым могут согласится большинство форумчан


Цитата(vinter @  3.10.2008,  17:33 Найти цитируемый пост)
MAKCim, сразу видно соскчилсмя по РВ  

наболело  smile 

J0ker
вопрос прямой
ты профессионально занимался разработкой больших систем на С? (профессионльно = получал деньги, больших = хотя бы > 20000 строк и > 50 модулей (*.h, *.c файлы))

Добавлено через 7 минут и 52 секунды
maxim1000
соглашусь по большей части
это еще раз оправдывает мой тезис
"главное, чтобы человек был профессионал в своем деле"

Добавлено через 11 минут и 59 секунд
Цитата(J0ker @  4.10.2008,  03:58 Найти цитируемый пост)
ну на этом фоне изуверства MAKCim'а с goto уже совсем не комильфо

ой как мне не хочится начинать по поводу goto  smile 
что в моем примере изуверство?
это стандартный способ управлением жизненным циклом объектов без дублирования кода и потери эффективности засчет вызова функций



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

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


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


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

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



Цитата(maxim1000 @  4.10.2008,  10:48 Найти цитируемый пост)
если в функции будет две ветки if'а, в каждой из которых выделяются свои ресурсы, которые нужно будет освободить, такое решение уже не очень подойдёт

два вложенных if-а - это уже недостаточно хорошо и по возможности от этого надо избавляться (разделяю точку зрения Торвальдса)
избавляемся инвертированием условий
иначе - вызов функции
что-то типа такого
Код

static int get(struct object *object, int condition)
{
    return condition ? __get_true(object) : __get_false(object);
}

применя правило рекурсивно, можно разрулить любую степень вложенности

в ядре Linux эта тема раскрыта в полной мере
есть * функции и __* функции
вторые - это первые с конкретным инвариантом

Добавлено @ 11:28
вообще говоря, крайне глупо сравнивать С и С++ as is
принципы эффективного программирование на оных различаются
то, что на С++ решается одним методом, на С будет решаться другим, но это не значит, что от отсутствия первого в другом теряется эффективность другого

Добавлено через 13 минут и 18 секунд
ну и вообще, спасибо тем, кто хоть как-то разделяет мою точку зрения
 это достаточно рисковано, замахнуться на "святое"

Это сообщение отредактировал(а) MAKCim - 4.10.2008, 11:29


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

PM MAIL   Вверх
Lazin
Дата 4.10.2008, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



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

oik_error % __FUNCTION__" error " % ecode;

это просто вывод в лог, выглядит просто, но на самом деле хрен там:
oik_error - макрос, который создает временный объект:
Код

#       define oik_error    oik::log::logstream <1> ()

когда объект класса oik::log::logstream создается, он получает ссылку на глобальный объект класса logstream_backend, перегруженый оператор % вызывает шаблонную функцию logstream_backend.write с соответствующим параметром, а в свою очередь обращается к буферу (локальному для каждого потока) и форматирует в него переданое значение, следующий вызов оператора % делает то-же самое, только дописывает свои данные в конец буфера и тд, в результате буфер содержит строку сообщения, которую нужно записать в лог, затем, в деструкторе, при разрушении объекта класса oik::log::logstream вызывается библиотечная функция, которая копирует данные из буфера в "большой и длинный буфер вода вывода"(тм) который имеет размер кратный размеру сектора на диске, а так-же это буфер выровнен по границе страницы, в этот буфер могут писать несколько потоков одновременно не нарушая его структуру, далее, в случае если места в буфере не хватает, он будет сброшен на диск(напрямую, без кэширования), точнее будет сброшена только его часть, кратная размеру сектора, а то, что осталось, будет перемещено в его начало, во время этого процесса, будут заблокированы другие потоки(если они попытаются записать что-то в буфер), после того, как "большой и длинный буфер вода вывода"(тм) будет очищен, сначала будет запущен поток, который запусти этот процесс, а потом остальные, в том порядке, в котором они пытались записать данные. После этого буфер в который форматировались данные то-же будет очищен, далее, в случае если есть сетевое соединение, данные будут посланы клиенту, асинхронно ( есть клиентская программа, с помощью которой можно мониторить активность программ) smile 
наверное иногда не очень хорошо, когда одна строчка делает столько разной херни smile 

Это сообщение отредактировал(а) Lazin - 4.10.2008, 11:57
PM MAIL Skype GTalk   Вверх
UnrealMan
Дата 4.10.2008, 12:32 (ссылка)   | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 0
Всего: 32



Цитата(MAKCim @  4.10.2008,  12:03 Найти цитируемый пост)
дело не в количестве, а в качестве
бывает, код длиной в 5 строчек, труден для восприятия

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

Цитата(MAKCim @  4.10.2008,  12:03 Найти цитируемый пост)
доехать до пункта Б = решить задачу
и С без шаблонов, и С++ с шаблонами доедут до пункта Б

Выжить = решить задачу.
Человек с домом и человек без дома выживают. Итак, ещё раз: не хочешь ли ты стать бездомным?

Цитата(MAKCim @  4.10.2008,  12:03 Найти цитируемый пост)
шаблоны - это не панацея

Это одно из преимуществ C++ перед C.

Цитата(MAKCim @  4.10.2008,  12:03 Найти цитируемый пост)
объектный подход != ЯП

Использовать объектный подход на необъектно-ориентированном C затратнее, чем на объекто-ориентированном C++.

Цитата(MAKCim @  4.10.2008,  12:03 Найти цитируемый пост)
VIM - крупный програмный проект?
EMACS - крупный програмный проект?
Python - крупный програмный проект?
GTK - крупный програмный проект?

И что это доказывает? Что при создании этих проектов разработчикам не пришлось пострадать геморроем?

Цитата(MAKCim @  4.10.2008,  12:03 Найти цитируемый пост)
исключения, к примеру, могут очень дорого обойтись в конечном итоге

Могут, если их использовать не по назначению. Ну и что?

Цитата(MAKCim @  4.10.2008,  12:03 Найти цитируемый пост)
если ты умный человек, ты понял, о чем я

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

Цитата(MAKCim @  4.10.2008,  12:03 Найти цитируемый пост)
именно, НО
заметь, тут нет никакого намека на UnrealMan

тут общий тезис, никого конкретно не затрагивающий

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

Цитата(UnrealMan @  3.10.2008,  18:08 Найти цитируемый пост)
Его как минимум сложнее читать и модифицировать. 

Цитата(MAKCim @  4.10.2008,  12:03 Найти цитируемый пост)
опять таки, смотря кому

Ты тупо отрицаешь очевидное. Как я уже говорил, убеждать тебя лично я не собираюсь. Те, кто очевидное не отрицает, пусть делают выводы сами.

Цитата(MAKCim @  4.10.2008,  12:03 Найти цитируемый пост)
я С++ знаю  

Мда уж, видел я твой уровень знаний.

Это сообщение отредактировал(а) UnrealMan - 4.10.2008, 13:07
PM MAIL   Вверх
kemiisto
Дата 4.10.2008, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 3
Всего: 160



Цитата(J0ker @  4.10.2008,  03:20 Найти цитируемый пост)
потом, никто-же не утверждает, что C++ лучший и первый ОО язык - вопрос в приемуществе C++ конкрено над C

J0ker, я вот что хотел сказать. Рассмотрим императивное программирование. Существует программирование в машинных кодах - назовём его нулевым уронем абстракции. Далее, первый уровень - ассемблер (здесь уже есть мнемонические команды). Третий уровень - процедурные языки, или языки структурного программирования (это как хотите). Четвёртый - ООП. Так вот, несмотря на все недостатки С и несмотря на то, что, по большому счёту, своему успеху он обязан UNIX этот язык закремился на третьем уровне. Системные программисты любять С. А что C++? Вот Вы же сами правильно писали: 
Цитата(J0ker @  3.10.2008,  16:22 Найти цитируемый пост)
Так и скажите, что вам просто лень изучать сложный инструмент

Вот, вот. Лень было в своё время программистам изучать SIMULA и Smalltalk. Они пошли по пути наименьшего сопроотивления - С++ - там хоть синтаксис был знакомый и совместимость c C есть.

Цитата(J0ker @  4.10.2008,  03:20 Найти цитируемый пост)
и потом, пользуясь вашим-же сравнением, по аналогии - Эйнштейну нобелевку вручили вовсе не за Теорию Относительности - так что, порешим значение ТО в современной физике, выражаясь юридическим языком, ничтожным?

То, что Вы плохо знакомы с физикой - очевидно из приведённой цитаты. Крайне неудачный пример.
Во-первых, Альберт Эйнштейн получил премию «За заслуги перед теоретической физикой и особенно за открытие закона фотоэлектрического эффекта». Формулировку видите? Особеннно, но не только за теорию фотоэффекта.
Во-вторых, 
Цитата
В архивах Нобелевского комитета сохранилось около 60 номинаций Эйнштейна в связи с формулировкой теории относительности, однако премия была присуждена только в результате номинации в связи с объяснением фотоэлектрического эффекта. Автор единственной прошедшей отбор в Нобелевском комитете номинации Альберта Эйнштейна на Нобелевскую премию по физике Карл Вильгельм Озеен особенно подчеркивал, что на этот раз он номинирует Эйнштейна не в связи с теорией, которая представлялась спорной членам Нобелевского комитета, а в связи с объяснением природного явления, несомненно наблюдаемого в эксперименте.

И СТО и ОТО тогда считались спорными! За спорные теории Нобеловской премии не дают! Видимо, и формулировку Премии Тьюринга создателям С можно трактовать в том же русле - за разработку теории ОС (и за создание UNIX в частности). Про С нет ни слова!


Это сообщение отредактировал(а) kemiisto - 4.10.2008, 12:57


--------------------
PM MAIL WWW GTalk Jabber   Вверх
MAKCim
Дата 4.10.2008, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(UnrealMan @  4.10.2008,  12:32 Найти цитируемый пост)
Если сложить всё вместе, то предлагаемый тобой код заметно труднее для восприятия

и тебе задаю этот вопрос
ты профессионально (или вообще) программировал на С?

Цитата(UnrealMan @  4.10.2008,  12:32 Найти цитируемый пост)
Выжить = решить задачу.
Человек с домом и человек без дома выживают. Итак, ещё раз: не хочешь ли ты стать бездомным?

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

int (*state_machine[])(int) = {
    [STATE_GET] = &state_get,
    [STATE_SET] = &state_set,
    [STATE_SET + 1 ... STATE_MAX - 1] = &state_none
};

в С++ ее нет
но в С++ эту задачу можно решить обычным присваиванием (резкое увеличение кода, однако  smile )
как итог: ты хочешь стать бездомным?  smile 

Цитата(UnrealMan @  4.10.2008,  12:32 Найти цитируемый пост)
Использовать объектный подход на необъектно-ориентированном C затратнее, чем на объекто-ориентированном C++.

ты профессионально (или вообще) программировал на С?


Цитата(UnrealMan @  4.10.2008,  12:32 Найти цитируемый пост)
И что это доказывает? Что при создании этих проектов разработчикам не пришлось пострадать геморроем?

если ты знаешь, что они страдали, скажи мне, почему они не выбрали С++?


Цитата(UnrealMan @  4.10.2008,  12:32 Найти цитируемый пост)
Могут, если их использовать не по назначению. Ну и что?

хотелось бы услышать способы использования исключений, а то я только 2 знаю


Цитата(UnrealMan @  4.10.2008,  12:32 Найти цитируемый пост)
Я уже давно (ещё до появления этой темы) понял, что литературы, освещающей вопросы архитектуры программ, ты либо вообще не читал, либо читал очень мало.

голословно, подкрепи фактами или хотя бы приведи логику своих рассуждений

Цитата(UnrealMan @  4.10.2008,  12:32 Найти цитируемый пост)
Ты тупо отрицаешь очевидное

ты профессионально (или вообще) программировал на С?

Цитата(UnrealMan @  4.10.2008,  12:32 Найти цитируемый пост)
Мда уж, видел я твой уровень знаний.

факты, факты и еще раз факты
я вот знаю про тебя только то, что ты якобы хорошо знаешь "стандарт" C++ (хотя, может, это только понты)

Это сообщение отредактировал(а) MAKCim - 4.10.2008, 15:10


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

PM MAIL   Вверх
MAKCim
Дата 4.10.2008, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(UnrealMan @  4.10.2008,  12:32 Найти цитируемый пост)
Ага, т.е. если опустить одного человека - это плохо, а если опустить целую группу людей оптом, то в этом уже не будет ничего зазорного.

веришь или нет, никого опускать не хотел  smile 
даже не думал, что этой фразой могу кого-то оскорбить

Добавлено @ 15:38
UnrealMan
да, кстати
не хочешь вместо меня модератором в С++ (общие вопросы и для новичков)?
у меня времени мало да и энтузиазма особого нет из-за моей позиции
ты, я вижу, гуру (по крайней мере мне с моим уровнем знаний до тебя далеко), форум только приобретет от такого назначения


Это сообщение отредактировал(а) MAKCim - 4.10.2008, 15:41


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

PM MAIL   Вверх
MAKCim
Дата 4.10.2008, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Lazin @  4.10.2008,  11:49 Найти цитируемый пост)
Все высокоуровневые средства С++, призваны бороться со сложностью, иногда это обескураживает, например вот строчка кода из одного реального проекта:

ну а я напишу (из реального проекта)
Код

LogError("error [%d]", ecode);

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

Это сообщение отредактировал(а) MAKCim - 4.10.2008, 15:58


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

PM MAIL   Вверх
UnrealMan
Дата 4.10.2008, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 0
Всего: 32



Цитата(MAKCim @  4.10.2008,  16:06 Найти цитируемый пост)
в качестве примера
в С99 есть такая штука

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

Цитата(MAKCim @  4.10.2008,  16:06 Найти цитируемый пост)
Цитата(UnrealMan @  4.10.2008,  13:32 Найти цитируемый пост)
Использовать объектный подход на необъектно-ориентированном C затратнее, чем на объекто-ориентированном C++.

ты профессионально (или вообще) программировал на С?

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

Цитата(Гради Буч - Объектно-ориентированный анализ и проектирование)
Объектно-ориентированное программирование. Что же такое объектно-ориентированное программирование (object-oriented programming, OOP)? Мы определяем его следующим образом:

Объектно-ориентированное программирование - это методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования.

В данном определении можно выделить три части: 1) OOP использует в качестве базовых элементов объекты, а не алгоритмы (иерархия "быть частью", которая была определена в главе 1); 2) каждый объект является экземпляром какого-либо определенного класса; 3) классы организованы иерархически (см. понятие об иерархии "is а" там же). Программа будет объектно-ориентированной только при соблюдении всех трех указанных требований. В частности, программирование, не основанное на иерархических отношениях, не относится к OOP, а называется программированием на основе абстрактных типов данных.

В соответствии с этим определением не все языки программирования являются объектно-ориентированными. Страуструп определил так: "если термин объектно-ориентированный язык вообще что-либо означает, то он должен означать язык, имеющий средства хорошей поддержки объектно-ориентированного стиля программирования... Обеспечение такого стиля в свою очередь означает, что в языке удобно пользоваться этим стилем. Если написание программ в стиле OOP требует специальных усилий или оно невозможно совсем, то этот язык не отвечает требованиям OOP" [33]. Теоретически возможна имитация объектно-ориентированного программирования на обычных языках, таких, как Pascal и даже COBOL или ассемблер, но это крайне затруднительно. Карделли и Вегнер говорят, что: "язык программирования является объектно-ориентированным тогда и только тогда, когда выполняются следующие условия:

    * Поддерживаются объекты, то есть абстракции данных, имеющие интерфейс в виде именованных операций и собственные данные, с ограничением доступа к ним.
    * Объекты относятся к соответствующим типам (классам).
    * Типы (классы) могут наследовать атрибуты супертипов (суперклассов)" [34].

Поддержка наследования в таких языках означает возможность установления отношения "is-a" ("есть", "это есть", " - это"), например, красная роза - это цветок, а цветок - это растение. Языки, не имеющие таких механизмов, нельзя отнести к объектно-ориентированным. Карделли и Вегнер назвали такие языки объектными, но не объектно-ориентированными. Согласно этому определению объектно-ориентированными языками являются Smalltalk, Object Pascal, C++ и CLOS, a Ada - объектный язык. Но, поскольку объекты и классы являются элементами обеих групп языков, желательно использовать и в тех, и в других методы объектно-ориентированного проектирования.

Здесь высказано в точности то, о чём я говорил.

Цитата(MAKCim @  4.10.2008,  16:06 Найти цитируемый пост)
если ты знаешь, что они страдали, скажи мне, почему они не выбрали С++?

А это ты у них спроси smile

Цитата(MAKCim @  4.10.2008,  16:06 Найти цитируемый пост)
хотелось бы услышать способы использования исключений, а то я только 2 знаю

А я знаю только один: выбросить и поймать smile

Цитата(MAKCim @  4.10.2008,  16:06 Найти цитируемый пост)
голословно, подкрепи фактами или хотя бы приведи логику своих рассуждений

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

Цитата(MAKCim @  4.10.2008,  16:32 Найти цитируемый пост)
не хочешь вместо меня модератором в С++ (общие вопросы и для новичков)?

Там тогда некому будет отвечать на вопросы smile Лучше оставить всё, как есть.



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


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: нет
Всего: 14



Цитата(maxim1000 @  4.10.2008,  10:48 Найти цитируемый пост)
ну, там они, насколько я заметил, ведут себя вполне хронологически - наверх не переходят

нет, они там В ОБРАТНОМ порядке - чел пытался сымитировать разрушение при выходе в случае возникновения исключения
так шо не комильфо  smile 
Цитата(maxim1000 @  4.10.2008,  10:48 Найти цитируемый пост)
если в функции будет две ветки if'а, в каждой из которых выделяются свои ресурсы, которые нужно будет освободить, такое решение уже не очень подойдёт

подойдет подойдет - там надо будет перед } продублировать тот-же код  smile 

Цитата(MAKCim @  4.10.2008,  11:03 Найти цитируемый пост)
просто лабы и реальное программирование несколько отличаются

сразу замето что мы из разных поколений - "лабать" по фене - играть (на музыкальном инструменте обычно)  smile 

Цитата(MAKCim @  4.10.2008,  11:03 Найти цитируемый пост)
я согласен, что типобезопасность будет снижена

не скромничайте - она будет отсутствоват без макросов

Цитата(MAKCim @  4.10.2008,  11:03 Найти цитируемый пост)
уточни, что подразумевается под отладкой

ээээээ.... пардон.... у нас тут прграммисты собрались или где?  smile 

Цитата(MAKCim @  4.10.2008,  11:03 Найти цитируемый пост)
префиксы/суффиксы имен

т.е. вы хотите использовать префиксы/суффиксы для ВСЕХ экспортируемых имен библиотеки (заметьте, не только для макросов)?  smile 

Цитата(MAKCim @  4.10.2008,  11:03 Найти цитируемый пост)
J0ker, 
вопрос прямой
ты профессионально занимался разработкой больших систем на С? (профессионльно = получал деньги, больших = хотя бы > 20000 строк и > 50 модулей (*.h, *.c файлы))

разработкой конечно нет - я-ж не мазохист smile  Поддержкой - да, так-что знаком с макрос-бэйзд контейнерами  smile 

Цитата(MAKCim @  4.10.2008,  11:03 Найти цитируемый пост)
ой как мне не хочится начинать по поводу goto  smile 
что в моем примере изуверство?
это стандартный способ управлением жизненным циклом объектов без дублирования кода и потери эффективности засчет вызова функций

goto не при чем
читайте контекст

Добавлено через 5 минут и 12 секунд
Цитата(MAKCim @  4.10.2008,  11:23 Найти цитируемый пост)
то, что на С++ решается одним методом, на С будет решаться другим, но это не значит, что от отсутствия первого в другом теряется эффективность другого

теряется не эффективность кода, а эффективность разработки - т.е. вас уволят ДО выяснения эффективен код или нет  smile 

Цитата(MAKCim @  4.10.2008,  11:23 Найти цитируемый пост)
это достаточно рисковано, замахнуться на "святое"

не стройте из себя мученника  smile 



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


Explorer
****


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

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



Цитата(UnrealMan @  4.10.2008,  18:08 Найти цитируемый пост)
Высказываемые тобой тезисы поразительно часто расходятся с высказываниями и рекомендациями авторитетных авторов литературы по программированию.

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

Цитата(UnrealMan @  4.10.2008,  18:08 Найти цитируемый пост)
Там тогда некому будет отвечать на вопросы

UnrealMan, а ты зачем нас убогих тогда вообще посещаешь?



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


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: нет
Всего: 14



Цитата(kemiisto @  4.10.2008,  12:54 Найти цитируемый пост)
Системные программисты любять С. А что C++?

Цитата(kemiisto @  4.10.2008,  12:54 Найти цитируемый пост)
Лень было в своё время программистам изучать SIMULA и Smalltalk.

должен я сделать из этого вывод, что системные программисты любят SIMULA и Smalltalk? или вы чего-то недоговариваете?
может быть системные программисты просто не любять ООП а не конкретно C++?  smile 

Цитата(kemiisto @  4.10.2008,  12:54 Найти цитируемый пост)
Во-первых, Альберт Эйнштейн получил премию «За заслуги перед теоретической физикой и особенно за открытие закона фотоэлектрического эффекта». Формулировку видите?

ну не занимайтесь буквоедством smile У них так принято - почитайте остальные формулировки  smile Так-шо можете считать дефакто - только

Цитата(kemiisto @  4.10.2008,  12:54 Найти цитируемый пост)
И СТО и ОТО тогда считались спорными! За спорные теории Нобеловской премии не дают!

извините за цитирование, но "То, что Вы плохо знакомы с физикой - очевидно из приведённой цитаты."
Не спорных теорий не бывает в природе. Основной принцип научности теории - это ее фальсифицируемость - т.е. теория на протяжении всего своего существования обязана оставаться спорной - здесь можно говорить лишь о ее достоверности. Именно поэтому, кстати, теория Бога не является научной и именно по этому РАН отказывается добавлять теологию в число научных дисциплин.
Да, и почитайте формулировку ВРУЧЕННЫХ премий - там не одна за теорию выдана.
Ну дальнейшая посылка вобщем-то ничтожна в свете вышесказанного smile 



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


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 0
Всего: 32



Цитата(vinter @  4.10.2008,  20:37 Найти цитируемый пост)
очень неправильный подход, выдающимися люди становяться не из-за того, что воспроизводят чужой опыт, а из-за того, что реализуют нечто новое и необыкновенное.

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

Цитата(vinter @  4.10.2008,  20:37 Найти цитируемый пост)
Не задумавался никогда почему нет ни одного известного вундеркинда?

Как насчёт Карла Гаусса?

Цитата(vinter @  4.10.2008,  20:37 Найти цитируемый пост)
UnrealMan, а ты зачем нас убогих тогда вообще посещаешь?

Прежде всего ради собственного развлечения.
 smile 

Это сообщение отредактировал(а) UnrealMan - 4.10.2008, 20:44
PM MAIL   Вверх
nickless
Дата 4.10.2008, 21:49 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 2
Всего: 181



Ого, тут прямо войны smile 

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

- а на трактор можно сеялку привесить!
- да на кой? нам на мотациклах сеялки вообще не нужны
- да как же, ведь без сеялки никак, вот как бы ты на мотацикле зерно сеял?
- ну можно что-нибудь придумать, по полю ездить и разбрасывать, но это всё фигня, зато на мотацикле можно до 100 за 3 секунды разогнаться!
- дааа... посмотрел бы я как ты по полю 100 едешь smile 
- сразу видно ни разу на мотациклах не ездил... у тебя хоть права-то на него есть? или может ты вообще без прав?
...

Я к чему клоню smile  Чтобы программировать эффективно и с удобствами нужно использовать подход который в первую очередь удобен программисту, т.е. он должен его не только понимать, он должен думать на нём. А уж потом на основе этого он выберет себе и подходящие задачи, и язык, поддерживающий этот подход.

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

Конечно профессионал тем и отличается, что не только знает несколько языков/либ/фреймворков/итд но и может вполне сносно написать всё что угодно на любом из них. Но, даже сделав всё по правилам, по "другим" правилам, он не будет чувствовать себя комфортно - НЕ ТО. Не удобно, можно было бы сделать по-другому (как было бы правильно на другом языке, как привык итд), замечается масса недочетов другого подхода, в конце концов хочется похоливарить smile
В то же время используя "свой" привычный способ, всё идёт как по маслу, недочеты и неудобства этого подхода не замечаются, просто сама проблема решается совсем по другому, теми средствами что есть, и ничего другого и не нужно. А тех мест, где удобно было бы использовать другой подход, т.е. те же шаблоны или исключения, просто не возникает. Со временем что-то может конечно изменится, другой подход может понравится больше, и тогда всё повторяется, но уже в других холиварах...


Так что давайте жить дружно, каждый язык имеет право (хотя, нет, не каждый smile ) на существование, свой подход и свои задачи.
А ведь не хотел писать много smile 


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
kemiisto
  Дата 4.10.2008, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 3
Всего: 160



Цитата(J0ker @  4.10.2008,  19:00 Найти цитируемый пост)
должен я сделать из этого вывод, что системные программисты любят SIMULA и Smalltalk? или вы чего-то недоговариваете?
может быть системные программисты просто не любять ООП а не конкретно C++?

Можеть быть просто напросто не стоит "выдирать" цитаты из разных постов? Обсуждение идет в контексте прикладного ПО, т.к. иначе спор бессмыслен. И собственно так тема и называется ("для простых прог"). Так вот, когда то и прикладное ПО писали на процедурных языках (C, PASCAL). Потом пришло ООП (SIMULA, Smalltalk), но лень победила. Зато когда Страуструп, (как многие считаю, "придумал ряд усовершенствований к языку Си под собственные нужды." (цитата из Википедии), а на самом деле просто попытался "прилепить" красивый ярлычок "ООП" к С) создал C++ - массы откликнулись! Синтаксис тотже, совместимость есть + ООП.

Цитата(J0ker @  4.10.2008,  19:00 Найти цитируемый пост)
Основной принцип научности теории - это ее фальсифицируемость - т.е. теория на протяжении всего своего существования обязана оставаться спорной - здесь можно говорить лишь о ее достоверности.

Полный бред! Простите, конечно, за грубость... Читаем для начала хотя бы статью в Википедии.
Во-первых, почему это "основной"? 
Во-вторых фалсифицируемость теории означает, что должна существовать возможность (пусть даже нипотетическая) её опровержения путём постановки эксперимента. Разницу с написанным Вами чувствуете?
Ну, а в третьих, Вы же сами пишите, что это критерий НАУЧНОСТИ! То, что теория относительности фальсифицируема говорит в пользу ее научности!


--------------------
PM MAIL WWW GTalk Jabber   Вверх
J0ker
Дата 4.10.2008, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: нет
Всего: 14



Цитата(kemiisto @  4.10.2008,  21:54 Найти цитируемый пост)
совместимость есть + ООП

чтд собстна
куча кода уже написанного требует совместимости

Цитата(kemiisto @  4.10.2008,  21:54 Найти цитируемый пост)
Полный бред! Простите, конечно, за грубость... Читаем для начала хотя бы статью в Википедии.

да сами почитайте
http://en.wikipedia.org/wiki/Theory
я это и так знаю  smile 
видите-ли, многие рускоязычные статьи в Википедии не блещут полнотой
так-что не горячитесь...

Цитата(kemiisto @  4.10.2008,  21:54 Найти цитируемый пост)
Во-первых, почему это "основной"? 

один из основных вас устроит?

Цитата(kemiisto @  4.10.2008,  21:54 Найти цитируемый пост)
Во-вторых фалсифицируемость теории означает, что должна существовать возможность (пусть даже нипотетическая) её опровержения путём постановки эксперимента. Разницу с написанным Вами чувствуете?

нет не чувствую
требование возможности постановки оровергающего эксперимента исключает теорию из множества бесспорных сущностей (надеюсь c математической логикой вы знакомы?).

Цитата(kemiisto @  4.10.2008,  21:54 Найти цитируемый пост)
Ну, а в третьих, Вы же сами пишите, что это критерий НАУЧНОСТИ! То, что теория относительности фальсифицируема говорит в пользу ее научности! 

я вас поздравляю. судя по восклицательным знакам вы открыли что-то для себя новое  smile 

Это сообщение отредактировал(а) J0ker - 4.10.2008, 22:22


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


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 0
Всего: 32



Цитата(nickless @  4.10.2008,  22:49 Найти цитируемый пост)
Сравнивать же диаметрально противоположные языки

В сад. C++ позволяет делать почти всё то же, что и C, одинаково легко. Это явно не оставляет поводов считать эти языки диаметрально противоположными.

Это сообщение отредактировал(а) UnrealMan - 4.10.2008, 22:26
PM MAIL   Вверх
J0ker
Дата 4.10.2008, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: нет
Всего: 14



Цитата(UnrealMan @ 4.10.2008,  22:23)
Цитата(nickless @  4.10.2008,  22:49 Найти цитируемый пост)
Сравнивать же диаметрально противоположные языки

В сад. C++ позволяет делать почти всё то же, что и C, одинаково легко. Это явно не оставляет поводов считать эти языки диаметрально противоположными.

UnrealMan по правилам ООН писмэйкеров бить не положено - они должны стоять в сторонке и призывать: "Ребята, давайте жить дружно"  smile 


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


Explorer
****


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

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



Цитата(UnrealMan @  4.10.2008,  21:29 Найти цитируемый пост)
Типичная отмаза тех, кто не хочет изучать опыт других людей и созданные ими технологии

UnrealMan, ты видимо не понял, перед тобой никто не отмазывыается, не то место для отмазок, тут в них нет смысла. Ты считаешь , что надо следовать опыту других людей и стандартам, кто-то считает иначе. 
Цитата(UnrealMan @  4.10.2008,  21:29 Найти цитируемый пост)
Как насчёт Карла Гаусса?

Вики почитал? Я тоже почитал, нет там ни одного факта по которому его можно назвать вундеркиндом, он был именно гением, но он не был вундеркиндом.
P.S народ, я бы вам советовал не спорить с UnrealMan и J0ker, это совершенно бесполезно.


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


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: нет
Всего: 14



Цитата(vinter @  4.10.2008,  22:44 Найти цитируемый пост)
P.S народ, я бы вам советовал не спорить с UnrealMan и J0ker, это совершенно бесполезно. 

читай подись  smile 


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


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 2
Всего: 181



Цитата(UnrealMan @  4.10.2008,  21:23 Найти цитируемый пост)
C++ позволяет делать почти всё то же, что и C, одинаково легко.

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

А вообще я во всём посте ни разу не сравнил C и C++ smile 



--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
Dims
Дата 5.10.2008, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 1
Всего: 11



Все эти штучки (объектность) нужны для разгрузки мозга. Соответственно, на тех задачах, где мозг сильно не нагружен, они и не нужны.
PM MAIL   Вверх
UnrealMan
Дата 5.10.2008, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 0
Всего: 32



Цитата(vinter @  4.10.2008,  23:44 Найти цитируемый пост)
Ты считаешь , что надо следовать опыту других людей и стандартам

В этом плане мои взгляды традиционны.

Цитата(vinter @  4.10.2008,  23:44 Найти цитируемый пост)
кто-то считает иначе. 

Ты не поверишь: почти в любой сфере жизни найдутся индивидуумы, которые "считают иначе". Например, уголовники, которые считают, что соблюдать закон не нужно. Ну и что ты теперь предложишь? Взять за правило, что образ жизни уголовника ничем не хуже, чем у остальных? С их точки зрения он может быть не хуже.

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

Цитата(vinter @  4.10.2008,  23:44 Найти цитируемый пост)
Вики почитал? Я тоже почитал, нет там ни одного факта по которому его можно назвать вундеркиндом, он был именно гением, но он не был вундеркиндом

Вундеркинд - это интеллектуально одарённый ребёнок, и именно таким был Гаусс.

Цитата(vinter @  4.10.2008,  23:44 Найти цитируемый пост)
P.S народ, я бы вам советовал не спорить с UnrealMan и J0ker, это совершенно бесполезно. 

Я был бы более категоричен: это мазохизм smile

Цитата(nickless @  5.10.2008,  00:03 Найти цитируемый пост)
Да, а еще это можно делать на куче других языков, но тем не менее подход абсолютно разный.

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

Цитата(nickless @  5.10.2008,  00:03 Найти цитируемый пост)
А вообще я во всём посте ни разу не сравнил C и C++ 

А здесь в топике вообще-то C и C++ сравниваются, если ты не заметил smile

Это сообщение отредактировал(а) UnrealMan - 5.10.2008, 01:45
PM MAIL   Вверх
MAKCim
Дата 5.10.2008, 09:54 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



nickless
+1
и опять таки
"главное, чтобы человек был профессионал в своем деле"

UnrealMan, ты точно фанат  smile

Добавлено @ 10:00
Цитата(UnrealMan @  5.10.2008,  00:46 Найти цитируемый пост)
Ты не поверишь: почти в любой сфере жизни найдутся индивидуумы, которые "считают иначе". Например, уголовники, которые считают, что соблюдать закон не нужно. Ну и что ты теперь предложишь? Взять за правило, что образ жизни уголовника ничем не хуже, чем у остальных? С их точки зрения он может быть не хуже.

ты не поверишь, но сравнение некорректно  smile 


Цитата(UnrealMan @  5.10.2008,  00:46 Найти цитируемый пост)
Сравнение C и C++ я рассматриваю только с позиции традиционного подхода к вещам. Маргинальные подходы в рамках данной темы меня не интересуют (и, по-моему, я достаточно ясно дал это понять в своих предыдущих сообщениях).

после этого спор надо прекращать, ибо он бесполезен
заставить тебя немного по-другому взглянуть на свои фанатические предубеждения у меня не получится
также я бы не был столь категоричным по поводу маргинальности
по большей части весь мир opensource придерживается такой позиции
в частности Л. Торвальдс, который для меня является авторитетом
дабы проверить, насколько маргинален такой подход в рамках форума, создам голосование


Это сообщение отредактировал(а) MAKCim - 5.10.2008, 10:11


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

PM MAIL   Вверх
nerezus
  Дата 5.10.2008, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

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



Проголосовал за посследний вариант, причина: оба фанаты.
C в ООП неудобен из-за резкого увеличения количества кода. Т.е. затраты считай в 2 раза увеличиваются.

Согласен с nickless: в языках нет ничего общего кроме основ синтаксиса.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
UnrealMan
Дата 5.10.2008, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 0
Всего: 32



Цитата(MAKCim @  5.10.2008,  10:54 Найти цитируемый пост)
UnrealMan, ты точно фанат  

Ничего более оригинального, чем выпада в духе "сам дурак", я от тебя не ждал smile 

Цитата(MAKCim @  5.10.2008,  10:54 Найти цитируемый пост)
ты не поверишь, но сравнение некорректно  

Внятно объяснить, в чём заключается некорректность, ты не смог, так что я действительно тебе не поверю smile 

Цитата(MAKCim @  5.10.2008,  10:54 Найти цитируемый пост)
по большей части весь мир opensource придерживается такой позиции

Ты уж определился бы: по большей части или весь smile

Цитата(MAKCim @  5.10.2008,  10:54 Найти цитируемый пост)
в частности Л. Торвальдс, который для меня является авторитетом

Для меня он определённо не является авторитетом. Я бы даже сказал, что для меня он никто. Каких-либо известных исследовательских работ в области проектирования и программирования у него нет (по крайней мере, я таковых не видел). За то, что героическими усилиями он создал сложную работоспособную систему на C, ему, конечно, можно повесить медаль или поставить памятник, но вот считать его высказывания авторитетными я бы не стал. Собственно, в проекте такого масштабного применения, как ОС, компенсировать недостатки программного кода, возникшие как следствие убогости использованного языка программирования, привлечением дополнительных человеческих ресурсов (посредством тупого - в плане, что на это не требуется особых телодвижений - открытия исходного кода) может быть достаточно легко. Однако же далеко не каждый проект может рассчитывать на такую роскошь, как халявные человеческие ресурсы.

Цитата(MAKCim @  5.10.2008,  10:54 Найти цитируемый пост)
дабы проверить, насколько маргинален такой подход в рамках форума

Мдя, щас сбежится целый консилиум экспертов (на этом форуме их прямо-таки один через два участника) и выразит своё веское мнение smile

Это сообщение отредактировал(а) UnrealMan - 5.10.2008, 15:40
PM MAIL   Вверх
nerezus
Дата 5.10.2008, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

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



Цитата

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


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
UnrealMan
Дата 5.10.2008, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 0
Всего: 32



Цитата(nerezus @  5.10.2008,  17:11 Найти цитируемый пост)
Т.е. наши преподователи являются авторитетами(ибо некоторые из них намазюкали что-то теоретическое при отсутствующих навыках практики и неумении работать), 

Покажи хоть одну широко известную работу своих преподавателей. В трудах того же Буча обобщён опыт огромного сообщества программистов и архитекторов программного обеспечения. А что может высказать человек, который варится в собственном соку со своим любимым C? "Как-то раз n-цать лет назад я попробовал попользовать C++ разлива начала 90-х годов, мне не понравилось, так что C++ - это кака"? И все с благоговением должны принимать это к сведению?

Цитата(nerezus @  5.10.2008,  17:11 Найти цитируемый пост)
 а тот, кто создал огромный и всеми используемый проект 

Не надо преувеличивать: непосредственными пользователями этого проекта являются далеко не все. В частности, мне он не нужен. И создал он его не в одиночку (про халявные человеческие ресурсы я уже говорил).

Цитата(nerezus @  5.10.2008,  17:11 Найти цитируемый пост)
никто?

Для меня он никто. Рискну предположить, что для многих нелинуксоидов он также никто.

Это сообщение отредактировал(а) UnrealMan - 5.10.2008, 17:14
PM MAIL   Вверх
nerezus
Дата 5.10.2008, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

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



UnrealMan, Тот же Таненбаум для тебя авторитет?
При этом он ставит ОС Minix как реальную, поливает грязью Linux. Но где Линукс, а где Миникс сейчас?

Цитата

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

Цитата

Рискну предположить, что для многих нелинуксоидов он также никто.
 Из-за незнания.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
UnrealMan
Дата 5.10.2008, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 0
Всего: 32



Цитата(nerezus @  5.10.2008,  18:05 Найти цитируемый пост)
UnrealMan, Тот же Таненбаум для тебя авторитет?

Честно говоря, с его трудами я не знаком.

Цитата(nerezus @  5.10.2008,  18:05 Найти цитируемый пост)
Но где Линукс, а где Миникс сейчас?

На популярность продукта много чего может влиять.

Цитата(nerezus @  5.10.2008,  18:05 Найти цитируемый пост)
Т.е. ты не пользуешься интернетом? Ведь большинство сайтов работают именно на нем

Я говорил о непосредственном использовании.

Цитата(nerezus @  5.10.2008,  18:05 Найти цитируемый пост)
 Из-за незнания.

Может быть, может быть.
PM MAIL   Вверх
nerezus
Дата 5.10.2008, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

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



Цитата

Я говорил о непосредственном использовании.
 Ты непосредственно пользуешься продуктами, составной частью которых оно является.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
MAKCim
Дата 5.10.2008, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(UnrealMan @  5.10.2008,  12:36 Найти цитируемый пост)
Ничего более оригинального, чем выпада в духе "сам дурак", я от тебя не ждал 

это не выпада
просто меня вдруг осенило  smile 


Цитата(UnrealMan @  5.10.2008,  12:36 Найти цитируемый пост)
Внятно объяснить, в чём заключается некорректность, ты не смог, так что я действительно тебе не поверю

по-моему, это очевидно
очевидные вещи я объяснять не буду
и мне, кстати, глубоко наплевать, веришь ты мне или нет  smile 
это было утверждение

Цитата(UnrealMan @  5.10.2008,  12:36 Найти цитируемый пост)
Ты уж определился бы: по большей части или весь

я же ясно написал: по большей части
что здесь непонятного?


Цитата(UnrealMan @  5.10.2008,  12:36 Найти цитируемый пост)
компенсировать недостатки программного кода, возникшие как следствие убогости использованного языка программирования, привлечением дополнительных человеческих ресурсов (посредством тупого - в плане, что на это не требуется особых телодвижений - открытия исходного кода) может быть достаточно легко.

можно перечислить недостатки програмного кода, эксперт ты наш?  smile 
да, вот еще, вполне себе закрытая ОС Windows тоже на С написана  smile

 

Это сообщение отредактировал(а) MAKCim - 5.10.2008, 19:24


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

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


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 0
Всего: 32



Цитата(MAKCim @  5.10.2008,  20:23 Найти цитируемый пост)
по-моему, это очевидно
очевидные вещи я объяснять не буду

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

Это сообщение отредактировал(а) UnrealMan - 5.10.2008, 20:11
PM MAIL   Вверх
J0ker
Дата 5.10.2008, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: нет
Всего: 14



ну вот
апкакали друг друга и разбежались  smile 


MAKCim, вы идеалист
и это не комплимент  smile 


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


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 3
Всего: 160



Цитата(J0ker @  4.10.2008,  21:21 Найти цитируемый пост)
так-что не горячитесь...

Так, вроде остыл... Ого, сколько тут всего появилось!

Цитата(J0ker @  4.10.2008,  21:21 Найти цитируемый пост)
один из основных вас устроит?

Да. 

Цитата(J0ker @  4.10.2008,  21:21 Найти цитируемый пост)
нет не чувствую
требование возможности постановки оровергающего эксперимента исключает теорию из множества бесспорных сущностей (надеюсь c математической логикой вы знакомы?).

Да, тут Вот я "дал дури". Все верно, просто погорячился. Бывает. В пылу сражения. Смысл прячем за слова, в итоге - спорим не по существу. Мои извинения. smile С мат. логикой знаком.

Цитата(J0ker @  5.10.2008,  21:25 Найти цитируемый пост)
апкакали друг друга и разбежались

Ну, специфика раздела такая. Ничего не поделаешь... smile 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Dims
Дата 5.10.2008, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 1
Всего: 11



Господа, не позорьтесь. А то у вас уже дошло, что и Танненбаума вы не знаете, и Торвальдс дурак и Буч со Страуструпом. 

А кто же умный тогда?

Гораздо интересней спор когда какие-то аргументы по сути приводятся, пусть даже спорные или, наоборот, очевидные. 
PM MAIL   Вверх
Samotnik
Дата 5.10.2008, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 0
Всего: 191



По САБЖу
ДА НИЧЕМ 
JAVA   RULLEZZZ
 smile  smile  smile 
PM MAIL   Вверх
krwlr
Дата 5.10.2008, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 383
Регистрация: 6.12.2006

Репутация: 2
Всего: 51



Цитата(Samotnik @  5.10.2008,  23:22 Найти цитируемый пост)
JAVA   RULLEZZZ

подробнее...


--------------------
убрал
PM   Вверх
Dims
Дата 5.10.2008, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 1
Всего: 11



Я вот, тоже иногда подумываю, как бы придумать что-то такое, чтобы отделаться от ООП. Ведь в ней же есть недостатки.

Например, допустим у класса есть метод, который, в качестве параметра, принимает другой метод. По смыслу, этот метод -- это просто функция, которая работает с обоими классами. На каком же тогда основании эта функция считается "членом" первого класса, а не второго?

Особенно это видно на примере таких методов как opreator== в Си++ или equals в Джаве. 

То есть, по логике, должно быть можно создать метод, который является членом сразу нескольких классов. Но это получается ни что иное, как обычная глобальная функция.
PM MAIL   Вверх
Samotnik
Дата 5.10.2008, 23:35 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 0
Всего: 191



- Быстрая
- Кроссплотформенная
- Легче для понимания
- Легкость применения фреймворков
- Простая инеграция javascript, css, html (и д.р.  ВЕБ компонентов)
- Философия  "Писать однажды, исполнять везде"
- Читать мою подпись  smile 

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


Опытный
**


Профиль
Группа: Участник
Сообщений: 383
Регистрация: 6.12.2006

Репутация: 2
Всего: 51



Цитата(Samotnik @  5.10.2008,  23:35 Найти цитируемый пост)
- Быстрая

можно я скромно так... БУГАГАГА!!! 
БУГАГАГА! БУГАГАГА! БУГАГАГА!
не могу остановиться... ик... БУГАГАГА! smile 
не ну честное слово, это прикол был? оценил!! smile 

Цитата(Samotnik @  5.10.2008,  23:35 Найти цитируемый пост)
- Кроссплотформенная

... реализация. нормально, сейчас у всех нгормальных интерпретируемо-компилируемых так...
Цитата(Samotnik @  5.10.2008,  23:35 Найти цитируемый пост)
- Легче для понимания

субьективно... есть и полегче... (тоже субьективно)

Цитата(Samotnik @  5.10.2008,  23:35 Найти цитируемый пост)
- Читать мою подпись

читать мою подпись)


--------------------
убрал
PM   Вверх
Samotnik
Дата 5.10.2008, 23:55 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 0
Всего: 191



Цитата(krwlr @  5.10.2008,  23:53 Найти цитируемый пост)
читать мою подпись) 

ты позже ее написал, чем я  smile 
PM MAIL   Вверх
J0ker
Дата 6.10.2008, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: нет
Всего: 14



Цитата(Dims @  5.10.2008,  23:22 Найти цитируемый пост)
А кто же умный тогда?

я
я умный
только я это хорошо скрываю  smile

Добавлено @ 00:29
Цитата(Dims @  5.10.2008,  23:32 Найти цитируемый пост)
Например, допустим у класса есть метод, который, в качестве параметра, принимает другой метод. По смыслу, этот метод -- это просто функция

по смыслу - любой метод - это функция

Цитата(Dims @  5.10.2008,  23:32 Найти цитируемый пост)
которая работает с обоими классами

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

Цитата(Dims @  5.10.2008,  23:32 Найти цитируемый пост)
Особенно это видно на примере таких методов как opreator== в Си++

а что там видно? ИМХО все просто и логично...


Это сообщение отредактировал(а) J0ker - 6.10.2008, 00:30


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


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 3
Всего: 160



Цитата(Dims @  5.10.2008,  22:22 Найти цитируемый пост)
Господа, не позорьтесь. А то у вас уже дошло, что и Танненбаума вы не знаете, и Торвальдс дурак и Буч со Страуструпом. 

А это Вы где такое увидели? Просмотрел весь топик - не нашел.

Цитата(Dims @  5.10.2008,  22:32 Найти цитируемый пост)
Например, допустим у класса есть метод, который, в качестве параметра, принимает другой метод. По смыслу, этот метод -- это просто функция, которая работает с обоими классами. На каком же тогда основании эта функция считается "членом" первого класса, а не второго?

Особенно это видно на примере таких методов как opreator== в Си++ или equals в Джаве. 

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

Сколько раз не перечитивал - так и не понял, что хотел сказать автор... smile 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Dims
Дата 6.10.2008, 00:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 1
Всего: 11



Цитата(J0ker @  6.10.2008,  00:23 Найти цитируемый пост)
этот метод знает только свой класс через this, а вот метод, который он принимает в качестве параметра он не может вызвать без экземпляра класса которому оный метод принадлежит

Что за метод в качестве параметра?

Речь идёт о методе, который принадлежит к классу А, а его единственный параметр -- к классу Б, вот

void A::method(B arg)

в ООП метод обязан быть "более родным" классу A, нежели классу B. Иногда это оправдано, а иногда нет. 
PM MAIL   Вверх
UnrealMan
Дата 6.10.2008, 00:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 0
Всего: 32



Цитата(Dims @  6.10.2008,  00:22 Найти цитируемый пост)
А то у вас уже дошло, что и Танненбаума вы не знаете

К сожалению, пока не нашлось времени прочитать абсолютно всё smile

Цитата(Dims @  6.10.2008,  00:22 Найти цитируемый пост)
Гораздо интересней спор когда какие-то аргументы по сути приводятся

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

Цитата(Dims @  6.10.2008,  00:32 Найти цитируемый пост)
То есть, по логике, должно быть можно создать метод, который является членом сразу нескольких классов. 

Наверное, такие затруднения возникают от недостатка в языке поддержки мультиметодов. В общем-то, самые большие проблемы начинаются тогда, когда требуется произвести виртуальный вызов с учётом динамических типов двух объектов. Моделировать такую ситуацию без языковой поддержки мультиметодов довольно хлопотно.
PM MAIL   Вверх
J0ker
Дата 6.10.2008, 01:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: нет
Всего: 14



Цитата(Dims @  6.10.2008,  00:52 Найти цитируемый пост)
Что за метод в качестве параметра?

это вы у меня спрашиваете?
Цитата(Dims @  5.10.2008,  23:32 Найти цитируемый пост)
Например, допустим у класса есть метод, который, в качестве параметра, принимает другой метод.





Цитата(Dims @  6.10.2008,  00:52 Найти цитируемый пост)
void A::method(B arg)

в ООП метод обязан быть "более родным" классу A, нежели классу B. Иногда это оправдано, а иногда нет.  

а разве методу method более родней класс B???
почему вас тогда не смущает void A::method(int arg)?


Это сообщение отредактировал(а) J0ker - 6.10.2008, 01:32


--------------------
user posted image
PM MAIL   Вверх
Lazin
Дата 6.10.2008, 05:36 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



в ООП, метод method, просто способ послать сообщение объекту А, а объект B - всего-лишь параметр этого сообщения smile 
причем там вообще функции? =))
PM MAIL Skype GTalk   Вверх
Lazin
Дата 6.10.2008, 08:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



Цитата(Samotnik @  5.10.2008,  23:35 Найти цитируемый пост)
- Быстрая

смотря с чем сравнивать, к примеру до сабжа не дотягивает

Цитата(Samotnik @  5.10.2008,  23:35 Найти цитируемый пост)
- Кроссплотформенная

сабж то-же, только некоторые API - библиотеки непереносимы

Цитата(Samotnik @  5.10.2008,  23:35 Найти цитируемый пост)
- Легче для понимания

на самом деле Java мало чем отличается в этом плане, вот руби или пайтон легче для понимания, а Java это та-же статическая типизация что и в С++ smile 

Цитата(Samotnik @  5.10.2008,  23:35 Найти цитируемый пост)
- Легкость применения фреймворков

лолшто?

Цитата(Samotnik @  5.10.2008,  23:35 Найти цитируемый пост)
- Простая инеграция javascript, css, html (и д.р.  ВЕБ компонентов)

бывает и проще smile 

Цитата(Samotnik @  5.10.2008,  23:35 Найти цитируемый пост)
- Философия  "Писать однажды, исполнять везде"

это как-то связано с языком программирования?

Цитата(Samotnik @  5.10.2008,  23:35 Найти цитируемый пост)
- Читать мою подпись

читаю
Цитата(Samotnik @  5.10.2008,  23:35 Найти цитируемый пост)
JAVA HERE, JAVA THERE, JAVA sucks EVERY FUCKING WHERE

 smile 
PM MAIL Skype GTalk   Вверх
nerezus
Дата 6.10.2008, 08:11 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

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



Цитата

Кроссплотформенная
 Кстати еще один повод сравнить C и C++.
Первый не обладает этим, второй обладает.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
MAKCim
Дата 6.10.2008, 08:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(nerezus @  6.10.2008,  08:11 Найти цитируемый пост)
Первый не обладает этим, второй обладает. 

чего чего?  smile 
скажем так, оба обладают на уровне исходного кода, но второй в меньшей степени
1. С++ компилятор есть на меньшем числе платформ
2. Интерпретация "стандарта" C++ не одинакова для всех компиляторов
3. Нативный С++ код непереносим даже в рамках одной платформы

ps. а Java и вправду рулит
простая как дважды-два, но в то же время крайне мощная из-за различных фреймворков

Это сообщение отредактировал(а) MAKCim - 6.10.2008, 08:39


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

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


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 0
Всего: 191



А прогу которая написанная на С/С++   можно установить на пульт от телевизора ?  или в меню стиральной машины?  или в микроволновку ?  А может игру для мобил можно на  Сях написать ?  smile 
PM MAIL   Вверх
vinter
Дата 6.10.2008, 12:15 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


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

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



Samotnik, а почему бы нет?


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


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


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

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



Цитата(Samotnik @  6.10.2008,  12:04 Найти цитируемый пост)
А прогу которая написанная на С/С++   можно установить на пульт от телевизора ?  или в меню стиральной машины?  или в микроволновку ?  А может игру для мобил можно на  Сях написать ?

конечно
главное, чтобы были компиляторы под процессоры этих девайсов 


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

PM MAIL   Вверх
Samotnik
Дата 6.10.2008, 12:25 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 0
Всего: 191



но почему-то это все делается на Java  smile 
PM MAIL   Вверх
krwlr
Дата 6.10.2008, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 383
Регистрация: 6.12.2006

Репутация: 2
Всего: 51



Цитата(Samotnik @  6.10.2008,  12:25 Найти цитируемый пост)
но почему-то это все делается на Java

я почему-то думал что микроконтроллеры на Сях, С++ и Форте программируются...

Добавлено через 24 секунды
наивная моя душа smile 


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


Эксперт
***


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

Репутация: 1
Всего: 11



Цитата(J0ker @  6.10.2008,  01:24 Найти цитируемый пост)
это вы у меня спрашиваете?

Я оговорился. Я просто имел в виду объект другого класса.

Добавлено через 2 минуты и 9 секунд
Цитата(krwlr @  5.10.2008,  23:53 Найти цитируемый пост)
можно я скромно так... БУГАГАГА!!! 

А что смешного? По каким причинам Джава должна быть медленной, если используется JIT?
PM MAIL   Вверх
Samotnik
Дата 6.10.2008, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 0
Всего: 191



krwlr, все правильно, микроконтроллеры написанны на Си.  Я ж не спорю. 
Я хочу сказать, что Java самый  кроссплотформенный язык в мире, потому как  его легче всего встроить в мобилы (Java - игры) и маленькие аппаратики (Печи СВЧ, стиралки). Вот поэтому на нем все и написанно. 
А попробуй вижуал студио на мобилу поставить  smile  smile  smile 
 
PM MAIL   Вверх
krwlr
Дата 6.10.2008, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 383
Регистрация: 6.12.2006

Репутация: 2
Всего: 51



Цитата(Dims @  6.10.2008,  12:51 Найти цитируемый пост)
По каким причинам Джава должна быть медленной, если используется JIT?

вы тоже приколист? smile Как там у явы с апстартом? Какие минимальные системные требования?
(Прям день приколистов на Винграде smile )


--------------------
убрал
PM   Вверх
vinter
Дата 6.10.2008, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


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

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



Samotnik, иди во флейм и не позорься


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


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



Цитата(Samotnik @  6.10.2008,  12:25 Найти цитируемый пост)
но почему-то это все делается на Java

мдя, 2 года программировал контроллеры, но теперь я в сомнениях, не программировал ли я все это время на java? smile 

PM MAIL Skype GTalk   Вверх
krwlr
Дата 6.10.2008, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 383
Регистрация: 6.12.2006

Репутация: 2
Всего: 51



Цитата(Samotnik @  6.10.2008,  12:58 Найти цитируемый пост)
Java самый  кроссплотформенный язык в мире

хых, ну ладно... На твой взгляд Ява - самый ...

Цитата(Samotnik @  6.10.2008,  12:58 Найти цитируемый пост)
вижуал студио
 == среда разработки... 

Цитата(Samotnik @  6.10.2008,  12:58 Найти цитируемый пост)
потому как  его легче всего встроить в мобилы ... маленькие аппаратики
 ты встраивал? легко? завидую smile 



--------------------
убрал
PM   Вверх
Samotnik
Дата 6.10.2008, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 0
Всего: 191



Цитата

Samotnik, иди во флейм и не позорься 

что я не так сказал 
Обоснуй. 
Цитата

мдя, 2 года программировал контроллеры, но теперь я в сомнениях, не программировал ли я все это время на java?

 smile 
Цитата

все правильно, микроконтроллеры написанны на Си.  Я ж не спорю. 


Добавлено через 6 минут и 17 секунд
vinter,  ты  никогда не слышал о  Java  играх для мобил ?
Ну тогда ты не позорься !  smile 
PM MAIL   Вверх
vinter
Дата 6.10.2008, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


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

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



Цитата(Samotnik @  6.10.2008,  14:05 Найти цитируемый пост)
что я не так сказал 


Цитата(Samotnik @  6.10.2008,  13:25 Найти цитируемый пост)
почему-то это все делается на Java


Цитата(Samotnik @  6.10.2008,  13:58 Найти цитируемый пост)
Java самый  кроссплотформенный язык в мире


Цитата(Samotnik @  6.10.2008,  13:58 Найти цитируемый пост)
его легче всего встроить в мобилы (Java - игры) и маленькие аппаратики (Печи СВЧ, стиралки)


Цитата(Samotnik @  6.10.2008,  13:58 Найти цитируемый пост)
на нем все и написанно. 




--------------------
Мой блог
PM MAIL WWW   Вверх
Lazin
Дата 6.10.2008, 13:53 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



Задолбали вы со своей жабой, в этом треде не языки программирования обсуждают а троллят MAKCim-a 
smile

Это сообщение отредактировал(а) Lazin - 6.10.2008, 13:53
PM MAIL Skype GTalk   Вверх
MAKCim
Дата 6.10.2008, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Lazin @  6.10.2008,  13:53 Найти цитируемый пост)
Задолбали вы со своей жабой, в этом треде не языки программирования обсуждают а троллят MAKCim-a 

да-да-да 
 smile 


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

PM MAIL   Вверх
krwlr
Дата 6.10.2008, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 383
Регистрация: 6.12.2006

Репутация: 2
Всего: 51



мы типа хотели внести новую струю в этот холодный поток... Лучик света в темное царство.. smile 


--------------------
убрал
PM   Вверх
vinter
Дата 6.10.2008, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


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

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



из выше приведенного описания у меня вырисовывается только одна струя, и не надо ее сюда вносить smile


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


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

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



Цитата

1. С++ компилятор есть на меньшем числе платформ
 Эти платформы составляют проценты от 1%.

Цитата

2. Интерпретация "стандарта" C++ не одинакова для всех компиляторов
 На ВСЕХ популярных платформах есть Qt. Он един.

Цитата

3. Нативный С++ код непереносим даже в рамках одной платформы
 Исходник переносим.

Цитата

Я хочу сказать, что Java самый  кроссплотформенный язык в мире, потому как  его легче всего встроить в мобилы (Java - игры) 
 Язык? Ну как язык - да.
А как платформа - то нет, C++ в этом плане кроссплатформенней(Qt).
Твоя ошибка в том, что ты считаешь J2SE и J2ME одной технологией, что неверно.
Однако считаю Java самым легким и лучшим языком с dynamic strong типизацией.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
MAKCim
Дата 6.10.2008, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(nerezus @  6.10.2008,  14:49 Найти цитируемый пост)
На ВСЕХ популярных платформах есть Qt. Он един.

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


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

PM MAIL   Вверх
smartov
Дата 6.10.2008, 15:32 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


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

Репутация: 10
Всего: 259



Жосский оффтопик... 

Samotnik, жёлтая карточка устно. Название темы нечитабельным шрифтом написано? Или тебе там Java чудится?
(Вопросы риторические, отвечать не надо)

Модератор: Давайте вернёмся к теме обсуждения.

Это сообщение отредактировал(а) smartov - 6.10.2008, 15:32
PM MAIL   Вверх
J0ker
Дата 7.10.2008, 02:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: нет
Всего: 14



Цитата(MAKCim @  6.10.2008,  08:35 Найти цитируемый пост)
1. С++ компилятор есть на меньшем числе платформ

я тебе по секрету скажу, что есть даже платформы, на которых C нету... вернее были
всплакнем о динозаврах?  smile 

Цитата(MAKCim @  6.10.2008,  08:35 Найти цитируемый пост)
2. Интерпретация "стандарта" C++ не одинакова для всех компиляторов

ну никтож не спорит что C++ моложе C - стандарт уточняется и последние реализации полностью совместимы - boost вполне портируем

Цитата(MAKCim @  6.10.2008,  08:35 Найти цитируемый пост)
Нативный С++ код непереносим даже в рамках одной платформы

ээээ... чаво???? так все-таки - нативный или C++? вы уж определитесь  smile



Это сообщение отредактировал(а) J0ker - 7.10.2008, 03:16


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


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: нет
Всего: 14



Цитата(MAKCim @  6.10.2008,  15:09 Найти цитируемый пост)
т. е Qt реализована так, что ее код не зависит от того, каким образом компилятор интерпретирует стандарт?

ifdef'ы никто не отменял  smile 


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


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


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

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



Цитата(J0ker @  7.10.2008,  02:42 Найти цитируемый пост)
ну никтож не спорит что C++ моложе C - стандарт уточняется 

 smile 
с 98-го года все уточняется
я уж молчу про новый стандарт, он вообще лет 20 будет уточняться, если вообще когда-нибудь уточнится 

Цитата(J0ker @  7.10.2008,  02:42 Найти цитируемый пост)
ээээ... чаво???? так все-таки - нативный или C++? вы уж определитесь

нативный код, полученный путем применения С++ компилятора к модулю, написанному на С++
 smile 


Цитата(J0ker @  7.10.2008,  03:15 Найти цитируемый пост)
ifdef'ы никто не отменял

т. е есть ifdef-ы для gcc4.* gcc3.*, gcc2.*, icc, sc, ...?
 smile 
Цитата(J0ker @  7.10.2008,  02:42 Найти цитируемый пост)
я тебе по секрету скажу, что есть даже платформы, на которых C нету... вернее были

мы говорим про сегодня
и коню понятно, что когда-то небыло всего того, что есть сейчас
 smile 

Это сообщение отредактировал(а) MAKCim - 7.10.2008, 08:43


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

PM MAIL   Вверх
nerezus
Дата 7.10.2008, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

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



Цитата

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


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
nerezus
Дата 7.10.2008, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

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



Кроссплатформенность: Windows/linux/*bsd/WM - т.е. практически все платформы(кроме Symbian, но как раз Nokia купила же Qt, ведется работа). Без переписывания кода.
Включает в себя гуй, сеть, бд, хмл...

Что может предоставить C?


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
MAKCim
Дата 7.10.2008, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(nerezus @  7.10.2008,  09:58 Найти цитируемый пост)
Что может предоставить C? 

аналогичные кроссплатформенные либы
разница в том, что они не собраны в единый фреймворк


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

PM MAIL   Вверх
nerezus
Дата 7.10.2008, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

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



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

Для сети только SDL Network нашел, но... под WM сомнительно, что заработает.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
MAKCim
Дата 7.10.2008, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(nerezus @  7.10.2008,  10:41 Найти цитируемый пост)
Дай ссылочки на качественные либы для потоков и и сети?

ну как бы POSIX threads
сеть: cURL, openSSL


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

PM MAIL   Вверх
nerezus
Дата 7.10.2008, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

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



Цитата

ну как бы POSIX threads
 а под виндовс?

А либа для сокетов?


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
J0ker
Дата 7.10.2008, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: нет
Всего: 14



Цитата(MAKCim @  7.10.2008,  08:42 Найти цитируемый пост)
с 98-го года все уточняется

с 2003

Цитата(MAKCim @  7.10.2008,  08:42 Найти цитируемый пост)
нативный код, полученный путем применения С++ компилятора к модулю, написанному на С++

детские болезни
рано или поздно наиболее эффективные реализации будут стандартизированы
С++ все-таки на 11 лет младше C и на порядок сложней в реализации - отсюда и данные на откуп создателей компиляторов некоторые тонкости реализации. Естественный отбор покажет кто прав  smile 

Цитата(MAKCim @  7.10.2008,  08:42 Найти цитируемый пост)
мы говорим про сегодня
и коню понятно, что когда-то небыло всего того, что есть сейчас

я правильно понимаю - вы предлагаете прекратить разработку новых языков только потому, что СЕГОДНЯ они не поддерживаются большинством платформ??????? smile 
и должен ли я рассматривать это заявление как "C forever!!!"?  smile

Добавлено через 4 минуты и 46 секунд
Цитата(MAKCim @  7.10.2008,  08:42 Найти цитируемый пост)
т. е есть ifdef-ы для gcc4.* gcc3.*, gcc2.*, icc, sc, ...?

что-то вы с gcc разошлись  smile 
разных интерпретаций гораздо меньше (на порядки я думаю  smile ) чем вам бы хотелось


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


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


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

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



Цитата(nerezus @  7.10.2008,  16:32 Найти цитируемый пост)
а под виндовс?

насколько я знаю, есть реализация POSIX threads под Windows

Цитата(nerezus @  7.10.2008,  16:32 Найти цитируемый пост)
А либа для сокетов? 

openSSL имеет мощный кроссплатформенный интерфейс BIO, инкапсулирующий работу с сокетами


Цитата(J0ker @  7.10.2008,  19:05 Найти цитируемый пост)
я правильно понимаю - вы предлагаете прекратить разработку новых языков только потому, что СЕГОДНЯ они не поддерживаются большинством платформ??????? 

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


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

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


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

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



POSIX Threads (pthreads) for Win32:
Цитата

Fraud Warning
http://sourceware.org/pthreads-win32/


The page you are trying to open has been reported for distributing malicious software
 Брутальненько)
Хорошо проект поддерживается)


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
J0ker
Дата 8.10.2008, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: нет
Всего: 14



Цитата(MAKCim @  7.10.2008,  19:59 Найти цитируемый пост)
я против разработки языков, для поддержки стандарта которых требуется нетривиальный компилятор 

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


--------------------
user posted image
PM MAIL   Вверх
MAKCim
Дата 9.10.2008, 08:25 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(J0ker @  8.10.2008,  20:20 Найти цитируемый пост)
такого сочетания не может предложить на сегодняшний день ни один другой язык. 

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

Это сообщение отредактировал(а) MAKCim - 9.10.2008, 08:32


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

PM MAIL   Вверх
nerezus
Дата 9.10.2008, 08:43 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

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



Цитата

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


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
MAKCim
Дата 9.10.2008, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(nerezus @  9.10.2008,  08:43 Найти цитируемый пост)
В некоторых областях он лидер.
Например разработка прикладнухи и игр. 

я с этим не спорю
я лишь отстаиваю свою позицию по сабжу  smile 


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

PM MAIL   Вверх
nerezus
Дата 9.10.2008, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

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



MAKCim, ну в том то и дело, что отстаивая свою позицию, ты задел другую)

А сам я его юзал из-за заказов(я во всех областях как бы неглубоко сижу, что позволяет мне работать на любых легких/средних заказах во всех областях).
При этом выбирал инструмент, наиболее подходящий.
И C++ часто был им. Очень часто(гораздо чаще, чем мне хотелось, ибо ненавижу его).


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
MAKCim
Дата 9.10.2008, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(nerezus @  9.10.2008,  11:48 Найти цитируемый пост)
ну в том то и дело, что отстаивая свою позицию, ты задел другую)

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


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

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


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

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



Цитата

в областях, где лидирует C++, можно применять С, причем не менее эффективно
 Мы же видели твой пример - трудозатраты больше в 2 раза. Соответственно количество времени больше.
Т.е. при аналогичном времени эффективность в 2 раза ниже будет.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
J0ker
Дата 10.10.2008, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: нет
Всего: 14



Цитата(MAKCim @  9.10.2008,  08:25 Найти цитируемый пост)
лучше много хороших узкоспециализированных, чем гигант-середнячок в каждой специализации

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

Цитата(MAKCim @  9.10.2008,  08:25 Найти цитируемый пост)
да, с абстракцией у С все в порядке

в порядке конечно
но вот уровень до C++ не дотягивает (что и понятно впринципе)  smile

Добавлено @ 17:56
Цитата(MAKCim @  9.10.2008,  12:02 Найти цитируемый пост)
мой тезис: в областях, где лидирует C++, можно применять С, причем не менее эффективно

этот тезис мы уже обсудили - можно применять даже машинные коды - в конечном итоге все сводится к ним - тогда вообще можно без компилятора обойтись  smile 

Это сообщение отредактировал(а) J0ker - 10.10.2008, 17:57


--------------------
user posted image
PM MAIL   Вверх
Страницы: (11) [Все] 1 2 3 ... Последняя »
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




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


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

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