powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / На чём лучше писать код при одинаковом количестве строк: на C или на C++?
25 сообщений из 474, страница 7 из 19
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39491923
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglТы на машине то ездишь?
Я не отвечаю на наводящие вопросы.
Если есть что спросить спрашивайте прямо, без лирических отступлений.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39491925
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky,

А я не спрашиваю. Я говорю что РТ есть там, где ты не видишь. И не должен видеть )

Так что отрицать его необходимость - глупо.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39491952
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbpatchно потом это просто надоедает и хочется сотворить что-то действительно значимое. Просто ради фана.Ну так сотвори, что мешает? Судя по всему, ты пока не творил для фана :) Но обязательно сотвори, и ты обнаружишь одну удивительную штуку.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39491962
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlТы же не забыл итоговую цель? Показать что ту-же самую задачу с исключениями решать проще, элегантнее, короче, и тп чем с кодами возврата. Пока это не было продемонстрировано.



не элегантнее, а вообще не невозможно по другому.

я же писал, как на ноль делить будем с кодами возврата? как память по невалидому указателю будем читать? как выходы за границы массива контролировать будем?
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39491963
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlMasterZivОдно только спрошу: на ноль как делить будем, какой код возврата проверять будем, или может быть аргументы проверять будем ?
Как вообще ?Как вообще? Да элементарно! Проверим делитель перед арифметикой и будем иметь возможность либо просто задать результат в одну из констант (ноль или бесконечность, смотря что нужно по логике расчетов) или выругаемся юзеру на экран, мол дай правильное значение для делителя.
Все очень просто: я, зная что вот тут могут быть проблемы, изначально пытаюсь их минимизировать. А ты, привыкнув к подходу: "проблема? Потом поймаем", борешься со следствием проблемы. Мы в итоге просто по разному мыслим.

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

я найду пример потом.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39491964
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
MasterZivТак что в принципе даже обсуждать тут нечего. Исключения были, есть и будут, и вредны они для отрасли или полезны, были ли они ошибкой или не были, -- спорить бессмысленно. Они были, есть и будут, и с ними нужно уметь жить и работать.Аварийные ситуации были есть и будут... Но так ли уж надо их еще и вручную создавать?

если вы подумаете, а не будете жить в парадигме, что кто то когда-то ошибся и все пошло не так, то поймёте ви конце концов, что это все одно и то же. Исключение - это и есть аварийная ситуация и способ ее обработки.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39491984
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargliv_an_ruпропущено...Не уверен, что эти метрики в готовом виде существуют, проще взять и посчитать для конкрекных инстанциаций SSTL-Евских темплетов с конкретным RT-friendly аллокатором (какой-нибудь любимый TLSF и т.п.) и прочими подробностями.
Особенно не уверен про время, так как дёрганье из кэша и дёргание из основной памяти без префетча --- запросто почти на два порядка разные времена.
Смысл не в скорости, а в детерминированности. Пусть даже 1с на 1мил элементов, но гарантированно.

Меня больше стек и память волнуют. В скорости большой запас на текущем железе (а реально РТ надо укладываться кроме спец.задач в 50-100мс), а вот если крешнется по памяти, будет опа.Ну я потому и пишу TLSF как пример, что с ним хорошо оценивать гарантированные поедания памяти и времена. С другой стороны, на практике интересует оценка поточнее, чем "длина бороды Мафусаила", поэтому смотрят и на средние времена плюс сколько-то сигм.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39492021
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_an_ruSiemarglпропущено...

Смысл не в скорости, а в детерминированности. Пусть даже 1с на 1мил элементов, но гарантированно.

Меня больше стек и память волнуют. В скорости большой запас на текущем железе (а реально РТ надо укладываться кроме спец.задач в 50-100мс), а вот если крешнется по памяти, будет опа.Ну я потому и пишу TLSF как пример, что с ним хорошо оценивать гарантированные поедания памяти и времена. С другой стороны, на практике интересует оценка поточнее, чем "длина бороды Мафусаила", поэтому смотрят и на средние времена плюс сколько-то сигм.Это только верх айсберга - позволит использовать malloc в С-RT приложениях, но не в С++.

Вопрос - сколько malloc'ов (new) и стека например в std::sort ?
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39492024
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как я посмотрю - здесь каждый первый разрабатывает реалтаймсистемы
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39492097
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилКак я посмотрю - здесь каждый первый разрабатывает реалтаймсистемыТак понимаешь, если ресурсов валом, то берется наждачка покрупнее, я например беру С# (да и ту сломал 20592132 ).

А когда у тебя какая то серверная хрень с сотнями процессов (для чего и применяют Схх), то она хоть и не РТ, но с ростом все больше и больше начинает по требованиям ее напоминать...
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39492182
Adx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adx
Гость
[quot SiemarglТак понимаешь, если ресурсов валом, то берется наждачка покрупнее, я например беру С# (да и ту сломал 20592132 ).

А когда у тебя какая то серверная хрень с сотнями процессов (для чего и применяют Схх), то она хоть и не РТ, но с ростом все больше и больше начинает по требованиям ее напоминать...[/quot]

В том же C# просадка по ресурсам вполне предсказуема, нормально оценивается. Никакой проблемы писать под C# "серверную хрень с сотнями процессов" нет, просто нужно аккуратнее управлять ресурсами. На том же ASP пишутся большие сайты с немаленькой нагрузкой.
Суть реалтайма не в повышенной нагрузке, а в гарантированном времени отклика. Естественно, что это распространяется только на управляющие контуры, а интерфейсную часть можно писать на С, C++, Java, C#, Python - не проблема.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39492235
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglА я не спрашиваю. Я говорю что РТ есть там, где ты не видишь. И не должен видеть )

Так что отрицать его необходимость - глупо.
Чего вдруг нельзя отрицать.
То что где-то применяется какая-то фича, не значит что в этом была необходимость.
Может просто разраб - идиот ))
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39492262
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargliv_an_ruпропущено...
Ну я потому и пишу TLSF как пример, что с ним хорошо оценивать гарантированные поедания памяти и времена. С другой стороны, на практике интересует оценка поточнее, чем "длина бороды Мафусаила", поэтому смотрят и на средние времена плюс сколько-то сигм.Это только верх айсберга - позволит использовать malloc в С-RT приложениях, но не в С++.

Вопрос - сколько malloc'ов (new) и стека например в std::sort ?Кто вам запрещает в плюсах отнаследовать от std:alloc обёртку над TLSF ?
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39492293
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_an_ruSiemarglпропущено...
Это только верх айсберга - позволит использовать malloc в С-RT приложениях, но не в С++.

Вопрос - сколько malloc'ов (new) и стека например в std::sort ?Кто вам запрещает в плюсах отнаследовать от std:alloc обёртку над TLSF ?А дальше что?
Мониторить сколь раз вызывается?
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39492418
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargliv_an_ruпропущено...
Кто вам запрещает в плюсах отнаследовать от std:alloc обёртку над TLSF ?А дальше что?
Мониторить сколь раз вызывается?Ну, если вы не знаете, утекает у вас память или нет, то мониторить.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39492441
dbpatch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbdbpatchно потом это просто надоедает и хочется сотворить что-то действительно значимое. Просто ради фана.Ну так сотвори, что мешает? Судя по всему, ты пока не творил для фана :) Но обязательно сотвори, и ты обнаружишь одну удивительную штуку.

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

в совсем широкие массы это не идет ибо пока еще инкубатор, есть пара фундаментально пока неразрешимых проблем, а примененные компромисы не убедительны (вопрос про динамически расширяемые строки/буферы - непрерывные массивы байт, в условиях запрета на realloc/malloc/free - в смысле они расширяются через повторный mmap, но для мелких строк это не приемлимо и со стековыми строками тоже вопрос)

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

впрочем, если ты не в теме проблематики то это все лишь белый шум
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39492444
dbpatch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_an_ruSiemarglпропущено...
А дальше что?
Мониторить сколь раз вызывается?Ну, если вы не знаете, утекает у вас память или нет, то мониторить.

подобное уже написано до вас :) https://msdn.microsoft.com/en-us/library/x98tx3cf.aspx

а если серьезно - то в любом проекте свои обертки над malloc/free - я думал это просто must have уже с третьего дня старта проекта, а оказывается находятся те, кто и вопросы задает, зачем это нужно
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39492448
dbpatch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилКак я посмотрю - здесь каждый первый разрабатывает реалтаймсистемы

применять принципы RT можно выборочно. оно знаешь - довольно просто сделать код тормозным - просто пиши себе как обычно это делают и не парься.

а вот написать коровую часть хорошо, чтоб потом последователи имели запас прочности - это обязательное правило, если не хочешь,
чтоб твой проект поставили на списание/переписывание уже через полгода после релиза.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39492459
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_an_ruSiemarglпропущено...
А дальше что?
Мониторить сколь раз вызывается?Ну, если вы не знаете, утекает у вас память или нет, то мониторить.
Речь не об утечке памяти, ну откуда вы вообще эту тему взяли???
Исходный вопрос 20657004

Речь о гарантии того, что ваше приложение поместится в XXX Кб оперативки и в YYY Кб стека. При любых условиях.
И о предварительной оценке XXX/YYY по исходному набору данных, если используется STL.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39492584
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargliv_an_ruпропущено...
Ну, если вы не знаете, утекает у вас память или нет, то мониторить.
Речь не об утечке памяти, ну откуда вы вообще эту тему взяли???
Исходный вопрос 20657004

Речь о гарантии того, что ваше приложение поместится в XXX Кб оперативки и в YYY Кб стека. При любых условиях.
И о предварительной оценке XXX/YYY по исходному набору данных, если используется STL.Для гарантии не надо мониторить, для гарантии надо считать.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39492610
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychWhite Owl,

>>Ну так поменяй.
написать быстренько, на форуме, объектную библиотеку для работы с ODBC? мило)Зачем библиотеку??? Для демонстрации решения одной маленькой задачи, ты хочешь писать библиотеку???
И после этого ты еще продолжаешь утверждать что с твоими любимыми исключениями код получается проще и элегантнее?! У тебя совесть есть?

egorych Я надеюсь только, что это библиотечный код, и ты его не пишешь для каждого запроса в приложении.Зря надеешься. Это реальный код в прикладной программе. Вызовы к SQL* функциям - это вызовы библиотеки (прямое обращение к ODBC функциям), а как я эти функции вызываю и как с ними работаю - я только что показал.
Тебе этот код не нравится? Ну так почему ты не покажешь аналогичный код который тебе нравится? Неужели я слишком многого прошу? Просто покажи свой элегантный код и все.



MasterZiv, Anatoly Moskovsky, а вы? Вы тоже частенько заявляете что код с исключениями проще и лучше. Можете сделать простой и элегантный аналог на исключениях для кода показанного в 20655972 ? Или так-же как egorych сольетесь?
Вы же с базами данных работаете ежедневно и наверняка решали проблему пропуска rowcout резалтсетов?
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39492614
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl,

print_odbc_error(SQL_HANDLE_STMT, TRUE);

процесс завершает?
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39492616
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилWhite Owl,

print_odbc_error(SQL_HANDLE_STMT, TRUE);

процесс завершает?Да.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
/*** Helper function to report ODBC errors */
void print_odbc_error(SQLSMALLINT handle_type, int critical) {
	SQLHANDLE hndl;          // Just to avoid passing the actual handle into this function.
	SQLCHAR sql_state[6];    // SQLSTATE is always 5 characters. google "msdn ODBC Error Codes" for code explanations
	SQLINTEGER native_error; // error code as reported by the driver. Driver specific, therefore ignored here.
	SQLCHAR message_text[2048];
	SQLSMALLINT message_length;

	// choose the appropriate handle
	switch(handle_type) {
	case SQL_HANDLE_ENV: hndl=henv; break;
	case SQL_HANDLE_DBC: hndl=hdbc; break;
	case SQL_HANDLE_STMT: hndl=hstmt; break;
	default: finish_process("Incorrect usage of print_odbc_error().", 2);
	}

	// Since any call to ODBC and/or database can return multiple messages, we have to iterate through them
	SQLSMALLINT record_number=1;
	while(TRUE) {
		retcode = SQLGetDiagRec(handle_type, hndl, record_number,
				sql_state, &native_error, message_text, sizeof(message_text), &message_length);
		if(retcode != SQL_SUCCESS) break;
		if( message_text[--message_length]=='\n') message_text[message_length]=0;
		sprintf(buf, "[SQLSTATE=%s] %s", sql_state, message_text);
		write_to_log(buf);
		record_number++;
	}

	if(critical) {
		odbc_cleanup();
		finish_process("Unrecoverable ODBC error", 2);
	}
}
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39492643
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlMasterZiv, Anatoly Moskovsky, а вы? Вы тоже частенько заявляете что код с исключениями проще и лучше. Можете сделать простой и элегантный аналог на исключениях для кода показанного в 20655972 ? Или так-же как egorych сольетесь?
Вы же с базами данных работаете ежедневно и наверняка решали проблему пропуска rowcout резалтсетов?
OK, напишу, чуть позже.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39492652
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlMasterZiv, Anatoly Moskovsky, а вы? Вы тоже частенько заявляете что код с исключениями проще и лучше. Можете сделать простой и элегантный аналог на исключениях для кода показанного в 20655972 ?
Прошу.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
// logging
bool verbose;
#define LOG_DEBUG(msg) do { if (verbose) std::cerr << msg << std::endl; } while (0)
#define LOG_FATAL(msg) do { std::cerr << "FATAL ERROR: " << msg << std::endl; } while (0)

// sample implementation

size_t ODBCStatement::sqlNumResultCols()
{
    size_t column_count;
    retcode=SQLNumResultCols(m_hstmt, &column_count);
    if(!SQL_SUCCEEDED(retcode))
        throw sql_error(getErrorText());
    if(retcode == SQL_SUCCESS_WITH_INFO)
        LOG_DEBUG(getErrorText());

    return column_count;
}

// usage
void foo()
{
    ODBC db;
    db.connect(connect_string);

    /// And now execute the actual query
    SQLLEN rowcount=0;

    auto st = db.statement();
    st.sqlExecDirect(query_string, SQL_NTS);

    SQLSMALLINT column_count = 0;
    while(column_count==0) {
        column_count = st.sqlNumResultCols();
        /// MS SQL can return some information before the actual resultset
        if(column_count==0) {
            st.sqlMoreResults();
            continue;
        }
        LOG_DEBUG("Query returned " << column_count << " columns");
    }

}

int main()
{
    try {
        foo();
    }
    catch (sql_error& e) {
        LOG_FATAL(e.what());
    }

    return 0;
}



Краткое пояснение.
1) Отделено логирование SQL_SUCCESS_WITH_INFO от прикладного кода, которое там нафиг не нужно.
2) Фатальные ошибки приводят к аварийному завершению функции, а не приложения. И в вызывающей функции принимается решение что делать.
...
Рейтинг: 0 / 0
25 сообщений из 474, страница 7 из 19
Форумы / Программирование [игнор отключен] [закрыт для гостей] / На чём лучше писать код при одинаковом количестве строк: на C или на C++?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]