Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.06.2016, 11:23   #1
jonikster
Форумчанин
 
Регистрация: 28.10.2014
Сообщений: 216
По умолчанию C++ vs C#

Приветствую всех.
По поводу выбора C++ я уже не однократно спрашивал тут и на других форумах тоже.
Меня интересует, что лучше использовать под поставленные задачи. C++ или C#.
Учить дальше C++ меня останавливает работа с памятью. Я как нуб в этом языке боюсь, что не осилю это. Но может, всё не так сложно, как я себе представляю?
Мне необходимо:
1. Отсутствие низкоуовневой работы;
2. Создание приложений с GUI интерфейсом;
3. Создание клиент-серверных приложений;
4. Работа с динамическими библиотеками.
C++ манит синтаксисом, а также тем, что много примеров программ. Но может всё же лучше C#? Или указатели, которые я так боюсь на самом деле не так сложно? И это можно понять?
Программирую исключительно под Windows.
jonikster вне форума Ответить с цитированием
Старый 12.06.2016, 11:33   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

все это умеет и тот и тот язык.
выбирайте тот что лучше знаете и более по душе.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.06.2016, 12:09   #3
jonikster
Форумчанин
 
Регистрация: 28.10.2014
Сообщений: 216
По умолчанию

C++ манит сельнее, но я из-за памяти как бы боюсь с ним сидеть. Сложная эта тема или всё же нет?
jonikster вне форума Ответить с цитированием
Старый 12.06.2016, 12:25   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну если не попытаетесь осилить, то и не узнаете осилите ли.

Для упрощения работы с памятью есть smart-указатели (shared_ptr, unique_ptr, ...), контейнеры (vector, ...).

А так в С++ естественно периодически придется делать что-то низкоуровневое. Чаще, чем в других языках.

Библиотеки подключать сложнее: никаких пакетных менеджеров типа NuGet/Maven/...
Особенно на винде, ибо
Код:
 sudo apt-get install libboost
тоже не завезли

И в стандартной библиотеки много чего нет. Даже для работы с юникодными строками скорее всего придется подключать какую-нибудь стороннюю.

Про синтаксис не знаю что вы в нем манящего нашли

Код:
#include "SomeParser.h"
#include <algorithm>

#define EMPTY_ID 0xffffffff

namespace
{
double um2in(uint32_t micrometers)
{
  return micrometers / 1000 / 25.4;
}
}

namespace libsm
{
std::vector<SomeParser::ObjectRef> SomeParser::readObjectRefs()
{
    std::vector<ObjectRef> refs(m_header->refObjCount);

    for (uint32_t i = 0; i < m_header->refObjCount; i++)
    {
        refs[i].id = readU32(m_stream);
    }

    ...

    refs.erase(std::remove_if(refs.begin(), refs.end(),
        [](const ObjectRef &ref)
    {
        return ref.id == EMPTY_ID;
    }), refs.end());

    return refs;
}

ArrowStyle SomeParser::readArrowStyle()
{
    auto refs = readObjectRefs();

    ArrowStyle style;

    for (const auto &ref : refs)
    {
        switch (ref.tag)
        {
        case 1:
            if (m_arrowPatterns.find(ref.id) != m_arrowPatterns.end())
            {
                style.pattern = m_arrowPatterns[ref.id];
            }
            else
            {
                DEBUG_MSG(("Arrow pattern with ID %u not found\n", ref.id));
            }
            break;
        case 2:
            ...
            break;
        default:
            DEBUG_MSG(("unknown arrow style tag %u\n", ref.tag));
            break;
        }
    }

    return style;
}
}
Код:
uint32_t readU32(const SomeStream stream)
{
    unsigned long numBytesRead;
    uint8_t const *p = input->readBytes(sizeof(uint32_t), numBytesRead);

    if (p && numBytesRead == sizeof(uint32_t))
    {
        return (uint32_t)p[0] | ((uint32_t)p[1] << 8) | ((uint32_t)p[2] << 16) | ((uint32_t)p[3] << 24);
    }
    throw EndOfStreamException();
}
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 12.06.2016 в 12:33.
Alex11223 вне форума Ответить с цитированием
Старый 12.06.2016, 13:19   #5
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от jonikster Посмотреть сообщение
Приветствую всех.
По поводу выбора C++ я уже не однократно спрашивал тут и на других форумах тоже.
Меня интересует, что лучше использовать под поставленные задачи. C++ или C#.
Учить дальше C++ меня останавливает работа с памятью. Я как нуб в этом языке боюсь, что не осилю это. Но может, всё не так сложно, как я себе представляю?
Мне необходимо:
1. Отсутствие низкоуовневой работы;
2. Создание приложений с GUI интерфейсом;
3. Создание клиент-серверных приложений;
4. Работа с динамическими библиотеками.
C++ манит синтаксисом, а также тем, что много примеров программ. Но может всё же лучше C#? Или указатели, которые я так боюсь на самом деле не так сложно? И это можно понять?
Программирую исключительно под Windows.
выбирайте с#
_Bers вне форума Ответить с цитированием
Старый 12.06.2016, 13:20   #6
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
Учить дальше C++ меня останавливает работа с памятью. Я как нуб в этом языке боюсь, что не осилю это.
Я уже писал Вам, что Вы боитесь того,
что, возможно, Вам и не понадобится.
Croessmah вне форума Ответить с цитированием
Старый 12.06.2016, 14:02   #7
jonikster
Форумчанин
 
Регистрация: 28.10.2014
Сообщений: 216
По умолчанию

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

Хорошо. Ребят, а скажите хотя бы примерно, в каких случаях может потребоваться низкоуровневая работа и работа с памятью в том числе?

Последний раз редактировалось Alex11223; 12.06.2016 в 14:22.
jonikster вне форума Ответить с цитированием
Старый 12.06.2016, 14:13   #8
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от jonikster Посмотреть сообщение
В общем, я так понял, что лучше сделать как мне говорил мой знакомый информатик. Пробовать и то, и другое, а потом сомтреть что больше подходит под требуемые задачи.
не получится.

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

что бы хоть как то распробовать с++
нужно затратить минимум год,
на изучение основ.

и это - только основы, а не решение задач насущных.
увязните.

начните изучать с#
он максимально отвечает заявленным вами требованиям.
и значительно проще с++.

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

начав с c# вы возьмете значительно более быстрый старт в карьере программиста.
с++ никуда не убежит.
_Bers вне форума Ответить с цитированием
Старый 12.06.2016, 14:17   #9
jonikster
Форумчанин
 
Регистрация: 28.10.2014
Сообщений: 216
По умолчанию

_Bers, программирование меня не интересует как карьера. Только для создания приложений определенного количества задач. это создание приложений с GUI приложений, звуковых игр, а также изучение работы сети на примере создания клиент-серверных приложений.
Я в C# смогу использовать dll? Такие как Bass, DirectSound и т.д?
jonikster вне форума Ответить с цитированием
Старый 12.06.2016, 14:28   #10
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,726
По умолчанию

Цитата:
Библиотеки подключать сложнее: никаких пакетных менеджеров типа NuGet/Maven/...
Особенно на винде,
Вы серьезно? Хорошо хоть я этого не знал и спокойно подключал https://www.nuget.org/packages/cpprestsdk/
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц