Re: C vs. C++
От: Piko  
Дата: 11.09.12 13:12
Оценка: 1 (1) -2
Здравствуйте, igna, Вы писали:

I> Возможно с непривычки, а есть здесь те, кто предпочитает C?


http://www.rsdn.ru/forum/flame.comp/4784642.1.aspx
Автор: Piko
Дата: 19.06.12

Потому что очень много низкокачественных C++ программистов (перешедших с C), которые
верят в то, что C быстрее чем C++,
верят в void* и т.п.,
думают что C++ это раздутые OO-иерархии,
могли обжечься 20 лет назад об C++ и этот опыт имеет их до сих пор.
В результате, когда этот сброд слышит embedded, fast, system, kernel — они бездумно используют C.

На сегодняшний день я вижу только следующие места когда можно обоснованно использовать C, а не C++ :
1) Отсутствие компилятора C++
2) В API (причём это не сам C, а только C-style interfaces)
3) В распоряжении есть только программисты знающие C, но не C++
4) Необходимость ковыряться в уже написанном на C проекте

Re[9]: C vs. C++
От: igna Россия  
Дата: 11.09.12 13:12
Оценка:
Здравствуйте, SilentNoise, Вы писали:

SN>Но идею, думаю, Вы поняли.


Не понял, чем "идея" отличается от моего первого варианта.
Re[8]: C vs. C++
От: SilentNoise  
Дата: 11.09.12 13:12
Оценка: :)
Здравствуйте, uzhas, Вы писали:

U>снова фейл

U>классическая проблема Си: борьба со звездочками
Да, есть такое.
Решается typedef`ами.
Re[9]: Идею поняли
От: Qbit86 Кипр
Дата: 11.09.12 13:15
Оценка: +2 :))) :)
Здравствуйте, SilentNoise, Вы писали:

SN>Виноват, совсем запутался :) Да, надо 3 звездочки.

SN>Но идею, думаю, Вы поняли.

Используй Си
@
Считай звёздочки
Глаза у меня добрые, но рубашка — смирительная!
Re[2]: C vs. C++
От: SilentNoise  
Дата: 11.09.12 13:17
Оценка: +3 -3 :)
Здравствуйте, Piko, Вы писали:

Потому что очень много низкокачественных С++ программистов (перешедших с С), которые
верят в то, что компилятор соптимизирует их монструозные конструкции на шаблонах,
верят в const, строгую типизацию и т.п.
думают что С++ это ООП язык,
могли не осилить 20 лет назад указатели и этот опыт имеет их до сих пор.
В результате, когда этот сброд слышит что-то — они бездумно используют С++.
Re[4]: C vs. C++
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 11.09.12 13:18
Оценка: :)
Здравствуйте, Alexéy Sudachén, Вы писали:

AS>
AS>YO_ARRAY *Oj_Get_Lines(void *file) {
AS>  YO_ARRAY *arr = Array_Pchars();
AS>  char *S;
AS>  while ((  S = Oj_Read_Line(file) )) Array_Push(__Retain(S));
AS>  return arr;
AS>}

AS>YO_ARRAY *arr = Oj_Get_Lines(Cfile_Open("file","r"));

AS>или

AS>char lines[] = "line1\nline2\nline3";
AS>YO_ARRAY *arr = Oj_Get_Lines(Memory_As_File(lines,strlen(lines)));

AS>или с любого объекта который реализует протокол чтения строки.
AS>



AS>Короче, https://github.com/alexeysudachen/libyoyo — там всё написано.


Йоу, массив. Ой, возьми строчки. Ой, прочитал строку. Библиотека, йо, йо — вотс ап, дог?
Ce n'est que pour vous dire ce que je vous dis.
Re[5]: What's up, Doc?
От: Qbit86 Кипр
Дата: 11.09.12 13:23
Оценка:
Здравствуйте, Don Reba, Вы писали:

DR>Библиотека, йо, йо — вотс ап, дог?


Какой ещё «дог»?
Глаза у меня добрые, но рубашка — смирительная!
Re[4]: C vs. C++
От: igna Россия  
Дата: 11.09.12 13:23
Оценка:
Здравствуйте, Alexéy Sudachén, Вы писали:

AS>Дык, а как это обычно делается в С++? Используется соответствующий фреймворк/библиотека примитивов. Ну и я то же использую свой фреймворк.


В C++ есть стандарный фреймворк. Поэтому нельзя сказать "тоже".

vector<string> get_lines_as_strings(istream&);


Но у меня есть еще один вопрос, как сообщать об ошибке, если файл не прочитался или память не разместилась? Менять сигнатуру функции? Просто вернуть нулевой указатель недостаточно, если нужно различать между двумя причинами ошибки.
Re[3]: C vs. C++
От: Piko  
Дата: 11.09.12 13:24
Оценка: +1 -1
Здравствуйте, SilentNoise, Вы писали:

SN>Потому что очень много низкокачественных С++ программистов (перешедших с С), которые

SN>верят в то, что компилятор соптимизирует их монструозные конструкции на шаблонах,

таки соптимизирует! http://eigen.tuxfamily.org/index.php?title=Benchmark
и оптимизирует уже как минимум 14 лет http://www.osl.iu.edu/publications/prints/1998/siek98%3A_siamoo.pdf

SN>верят в const, строгую типизацию и т.п.


hallelujah!

SN>думают что С++ это ООП язык,


я хз что ты понимаешь под "ООП язык".
некоторые думают что ООП — это значит отсутствие free functions

SN>могли не осилить 20 лет назад указатели и этот опыт имеет их до сих пор.


о да! забавно слышать это от осилившего перца http://www.rsdn.ru/forum/cpp/4888436.1.aspx
Автор: SilentNoise
Дата: 11.09.12
Re[6]: What's up, Doc?
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 11.09.12 13:25
Оценка: 1 (1) +1 :)
Здравствуйте, Qbit86, Вы писали:

Q>Какой ещё «дог»?


http://www.urbandictionary.com/define.php?term=dawg
Ce n'est que pour vous dire ce que je vous dis.
Re[4]: C vs. C++
От: SilentNoise  
Дата: 11.09.12 13:29
Оценка: :)))
Здравствуйте, Piko, Вы писали:

P>таки соптимизирует! http://eigen.tuxfamily.org/index.php?title=Benchmark

И не раздует при этом бинарник до космических размеров?

P>я хз что ты понимаешь под "ООП язык".

В гугл

здесь и ниже по ветке — взаимная пикировка с переходом на личности и прочим злом удалена. — Кодт
Re: C vs. C++
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 11.09.12 13:31
Оценка:
Здравствуйте, igna, Вы писали:

I>Есть тут кто-нибудь, кто предпочитает C вместо C++ хотя бы и для отдельных проектов?


I>Использую libxml2, это библиотека на C, и решил из интереса попробовать и свой модуль, непосредственно использующий libxml2, написать на C. Сначала оно было как бы неплохо, потом хуже. Возможно с непривычки, а есть здесь те, кто предпочитает C?


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

По работе и С, и С++. Но С++ весьма ограничен (kernel mode).
Re[2]: C vs. C++
От: igna Россия  
Дата: 11.09.12 13:34
Оценка:
Здравствуйте, Mystic, Вы писали:

M>Для себя пишу сейчас на C99, мне нравится. Отношение к С++ мое можно выразить словами: "лишний член --- жопе непонятка".


Отлично, а можно попросить тебя тоже ответить на вопрос
Автор: igna
Дата: 11.09.12
?
Re[5]: C vs. C++
От: Piko  
Дата: 11.09.12 13:39
Оценка: -1
Здравствуйте, SilentNoise, Вы писали:

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


P>>таки соптимизирует! http://eigen.tuxfamily.org/index.php?title=Benchmark

SN>И не раздует при этом бинарник до космических размеров?

как минимум не больше рукопашная кодогенерация
http://www.osl.iu.edu/publications/prints/1998/siek98%3A_siamoo.pdf

As an example, to provide basic functionality for selected sparse matrix
types, the NIST implementation of the Sparse BLAS [18] contains over 10,000 routines and
a code generation system.



SN>думают что С++ это ООП язык,

P>>я хз что ты понимаешь под "ООП язык".
P>>некоторые думают что ООП — это значит отсутствие free functions
SN>В гугл

http://lmgtfy.com/?q=oop+language
везде C++ упоминается.
я хз какое у тебе в голове понятие "ООП язык", поэтому попробуй его озвучить.
Re[6]: C vs. C++
От: Piko  
Дата: 11.09.12 13:41
Оценка: -1
Здравствуйте, Piko, Вы писали:

P>как минимум не больше чем рукопашная кодогенерация
Re[3]: C vs. C++
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 11.09.12 13:41
Оценка: 1 (1)
Здравствуйте, igna, Вы писали:

I>Здравствуйте, Alexéy Sudachén, Вы писали:


AS>>Встречный вопрос, это для разжигания флейма, или действительно интересно?


I>Это действительно интересно, потому-что хочу задать более конкрентые вопросы. Например, если функция должна разместить массив строк и вернуть его, как ты это делаешь?


Зависит от того, где и как будет использоваться. Предложенные варианты вполне годятся. Равно как и

struct string_list
{
};

int string_list_create(struct string_list * restrict result, FILE * f);
void string_list_destroy(struct string_list * restrict this);
const char * string_list_next(struct string_list * restrict this);
...
Re[5]: C vs. C++
От: MasterZiv СССР  
Дата: 11.09.12 13:48
Оценка: +2
> Не будет, ибо те средства абстракции, которые есть в С++ но отсутствуют в С,
> сделаны так монструозно, что приносят больше проблем чем профита.

Чё? чего сретства ? С++ прост как палка.
Posted via RSDN NNTP Server 2.1 beta
Re[6]: C vs. C++
От: SilentNoise  
Дата: 11.09.12 13:48
Оценка: -1
Здравствуйте, Piko, Вы писали:

P>как минимум не больше рукопашная кодогенерация

Ага, но экспоненциально больше чем использование void* и функции.
Re[3]: C vs. C++
От: denisko http://sdeniskos.blogspot.com/
Дата: 11.09.12 13:51
Оценка: 1 (1)
Здравствуйте, igna, Вы писали:

I>Здравствуйте, Alexéy Sudachén, Вы писали:


AS>>Встречный вопрос, это для разжигания флейма, или действительно интересно?


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


I>
I>int get_lines_as_strings(FILE *, char const *const **); // возвращает количество строк
I>


I>или


I>
I>struct strings {
I>    int num; // количество строк
I>    char const *const *str;
I>};

I>void get_lines_as_strings(FILE *, struct strings *);
I>


I>или


I>
I>struct strings {
I>    int num; // количество строк
I>    char const *const *str;
I>};

I>struct string get_lines_as_strings(FILE *);
I>


I>или еще как?

Если писать быстро
void get_lines_as_strings(FILE *,char***);
char** get_lines_as_strings(FILE *);
strings* get_lines_as_strings(FILE *);

Если писать острожно и пытаться управлять памятью
void get_lines_as_strings(FILE *,char**, Allocator* al, int maxLength);

Можно писать как Алексей показал c общим менеджером объектов (компромисс лаконичного и разумного способов имхо)
char** get_lines_as_strings(FILE *)
{
//вызываем общий менеджер, управляющий память 
GodStruct* god = callMeGod();
char** result  = (char**)godAlloc();
...
result[i] = godPush(stringRead);
...
}

Можешь передавать свой (имхо наиболее разумный способ)
char** get_lines_as_strings(FILE *, GodStruct*)
{
}
<Подпись удалена модератором>
Re[6]: C vs. C++
От: denisko http://sdeniskos.blogspot.com/
Дата: 11.09.12 13:56
Оценка:
Здравствуйте, MasterZiv, Вы писали:


>> Не будет, ибо те средства абстракции, которые есть в С++ но отсутствуют в С,

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

MZ>Чё? чего сретства ? С++ прост как палка.

А кто сложен тогда?
<Подпись удалена модератором>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.