Объявление

Collapse
No announcement yet.

Как можно программировать на С++ в 21-м веке?

Collapse
X
 
  • Filter
  • Время
  • Show
Clear All
new posts

  • #31
    ты путаешь причину со следствием

    не задачи под инструменты и разработчика, а разработчики и инструменты под задачи.

    Comment


    • #32
      может ли кто-нибудь мне объяснить связь Си-шарп и риал-тайм программинг? ну С++ можно еще к РТ привязать, но вот Си-шарп и Жаву что-то не очень. Наверно я отстал от жизни...

      Comment


      • #33
        Сообщение от Vaeringjar Посмотреть сообщение
        может ли кто-нибудь мне объяснить связь Си-шарп и риал-тайм программинг? ну С++ можно еще к РТ привязать, но вот Си-шарп и Жаву что-то не очень. Наверно я отстал от жизни...
        да отстал:
        Sun Java Real-Time System
        Лучше износиться, чем заржаветь.
        Timeline | Landed 25/11/2009

        Comment


        • #34
          Сообщение от shkoda Посмотреть сообщение
          да отстал:
          Sun Java Real-Time System
          нет, не отстал:

          "Many developers typically think that "real-time" means "really fast" as in moment-to-moment interaction with the system. While we work to keep Java RTS fast, real-time in the RTSJ context means "the ability to reliably and predictably respond to a real-world event". So "real-time" is more about timing than speed, per se. The ability to program a real-time solution means that developers need the appropriate support from the system in order to reason in a temporal fashion. "

          Sun Java Real-Time System

          это не риал-тайм, а "риал-тайм"

          Comment


          • #35
            Сообщение от Vaeringjar Посмотреть сообщение
            это не риал-тайм, а "риал-тайм"
            Реал-тайм это ответ не "быстронах", а "за гарантированное время". И если ты действительно думаешь, что "быстронах" это и есть тру реалтайм, то не отстал, а никогда и не был в теме. В вики на эту тему, на мой взгляд, очень правильно написано:
            Real-time computing - Wikipedia, the free encyclopedia
            In computer science, real-time computing (RTC), or reactive computing, is the study of hardware and software systems that are subject to a "real-time constraint"—i.e., operational deadlines from event to system response. By contrast, a non-real-time system is one for which there is no deadline, even if fast response or high performance is desired or preferred.
            Лучше износиться, чем заржаветь.
            Timeline | Landed 25/11/2009

            Comment


            • #36
              Сообщение от the_alexx Посмотреть сообщение
              меня как раз в си# несколько напрягает то , что я не контролирую момент уничтожения объекта
              Отсутствие GC - оно таки дисциплинирует..
              Да, оцутствие Deterministic destruction не дает использовать RAII

              using в C# не предлагать. В C++ нужен всего 1 правильный деструктор а с using приходится втыкать везде где хочешь RAII. Забыть помоему легче чем витруальный деструктор.
              LiveDoco - Live SQL Server database structure explorer and documentation tool

              Comment


              • #37
                Сообщение от shaqq Посмотреть сообщение
                а почему нельзя? я его так же любил раньше как и Вы и опыта было не менее. Просто вернулся и как-будто назад в первобытный век. Мне одному во всем мире нужно UDP сервер написать? Или может потоки никто не использует совсем? Или совсем никому не нужно чтобы код на других платформах работал?

                Описал вещи которые неприятно удивили после программирования на более удобных языках, вот и все. Ну и в порыве злости написал, конечно, после того как добавил 1 include и получил несколько тысяч ошибок в совершенно левых файлах. Реально глупая фигня.
                Откуда вы знаете сколько у него опыта было 9 лет назад ?
                К тому же за последние 9 лет C++ неслабо поменялся. не сам язык (к сожалению) а то как его используют.
                Boost кстате зря ругаете, очень сильная кучка библиотек.
                Со строками я не понимаю какая вообще проблема - юзайте std::string и можно забыть как она там внутри устроена.

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

                Препроцессор тоже не надо хаять - удобная хрень.
                Просто как тут уже сказали - вы за 9 лет привыкли пользоваться пластиковыми вилочками и ножичками а тут пришлось обратно железным скальпелем ... порезалися а теперь тут жалуетесь ))

                А насчет проапдейтить C++ - да, не помешало бы малеха (и я не о garbage collection - это мне 100 лет не надо ) Хочу все то что тут описали: C++0x - Wikipedia, the free encyclopedia
                Кстати уже давно не 0x уже 1x - так и хочецца сказать афтарам - ДА РОЖАЙТЕ УЖО!!!
                Но к сожалению за C++ нету мегабаксов MS или Sun(Oracle) .
                Обидно, учитывая что все их важнейщие продукты написаны на этих самых плюсах...
                LiveDoco - Live SQL Server database structure explorer and documentation tool

                Comment


                • #38
                  Задрали умники требующую одну большую кнопку "Что б было зашибись". Вам еще драйвера на жабе и с-диезе писать бы. Только из таких как вы, обычный "Hello, world" уже на CD не влезает. Убирать за собой ему лень видите ли.

                  Comment


                  • #39
                    и не говори
                    понаписывают всякой чуши типа вот этого:

                    [
                    uuid(2573F8F4-CFEE-101A-9A9F-00AA00342820)
                    ]
                    library LHello
                    {
                    // bring in the master library
                    importlib("actimp.tlb");
                    importlib("actexp.tlb");

                    // bring in my interfaces
                    #include "pshlo.idl"

                    [
                    uuid(2573F8F5-CFEE-101A-9A9F-00AA00342820)
                    ]
                    cotype THello
                    {
                    interface IHello;
                    interface IPersistFile;
                    };
                    };

                    [
                    exe,
                    uuid(2573F890-CFEE-101A-9A9F-00AA00342820)
                    ]
                    module CHelloLib
                    {

                    // some code related header files
                    importheader(<windows.h>);
                    importheader(<ole2.h>);
                    importheader(<except.hxx>);
                    importheader("pshlo.h");
                    importheader("shlo.hxx");
                    importheader("mycls.hxx");

                    // needed typelibs
                    importlib("actimp.tlb");
                    importlib("actexp.tlb");
                    importlib("thlo.tlb");

                    [
                    uuid(2573F891-CFEE-101A-9A9F-00AA00342820),
                    aggregatable
                    ]
                    coclass CHello
                    {
                    cotype THello;
                    };
                    };


                    #include "ipfix.hxx"

                    extern HANDLE hEvent;

                    class CHello : public CHelloBase
                    {
                    public:
                    IPFIX(CLSID_CHello);

                    CHello(IUnknown *pUnk);
                    ~CHello();

                    HRESULT __stdcall PrintSz(LPWSTR pwszString);

                    private:
                    static int cObjRef;
                    };


                    #include <windows.h>
                    #include <ole2.h>
                    #include <stdio.h>
                    #include <stdlib.h>
                    #include "thlo.h"
                    #include "pshlo.h"
                    #include "shlo.hxx"
                    #include "mycls.hxx"

                    int CHello::cObjRef = 0;

                    CHello::CHello(IUnknown *pUnk) : CHelloBase(pUnk)
                    {
                    cObjRef++;
                    return;
                    }

                    HRESULT __stdcall CHello::PrintSz(LPWSTR pwszString)
                    {
                    printf("%ws\n", pwszString);
                    return(ResultFromScode(S_OK));
                    }


                    CHello::~CHello(void)
                    {

                    // when the object count goes to zero, stop the server
                    cObjRef--;
                    if( cObjRef == 0 )
                    PulseEvent(hEvent);

                    return;
                    }

                    #include <windows.h>
                    #include <ole2.h>
                    #include "pshlo.h"
                    #include "shlo.hxx"
                    #include "mycls.hxx"

                    HANDLE hEvent;

                    int _cdecl main(
                    int argc,
                    char * argv[]
                    ) {
                    ULONG ulRef;
                    DWORD dwRegistration;
                    CHelloCF *pCF = new CHelloCF();

                    hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);

                    // Initialize the OLE libraries
                    CoInitializeEx(NULL, COINIT_MULTITHREADED);

                    CoRegisterClassObject(CLSID_CHello, pCF, CLSCTX_LOCAL_SERVER,
                    REGCLS_MULTIPLEUSE, &dwRegistration);

                    // wait on an event to stop
                    WaitForSingleObject(hEvent, INFINITE);

                    // revoke and release the class object
                    CoRevokeClassObject(dwRegistration);
                    ulRef = pCF->Release();

                    // Tell OLE we are going away.
                    CoUninitialize();

                    return(0); }

                    extern CLSID CLSID_CHello;
                    extern UUID LIBID_CHelloLib;

                    CLSID CLSID_CHello = { /* 2573F891-CFEE-101A-9A9F-00AA00342820 */
                    0x2573F891,
                    0xCFEE,
                    0x101A,
                    { 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }
                    };

                    UUID LIBID_CHelloLib = { /* 2573F890-CFEE-101A-9A9F-00AA00342820 */
                    0x2573F890,
                    0xCFEE,
                    0x101A,
                    { 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }
                    };

                    #include <windows.h>
                    #include <ole2.h>
                    #include <stdlib.h>
                    #include <string.h>
                    #include <stdio.h>
                    #include "pshlo.h"
                    #include "shlo.hxx"
                    #include "clsid.h"

                    int _cdecl main(
                    int argc,
                    char * argv[]
                    ) {
                    HRESULT hRslt;
                    IHello *pHello;
                    ULONG ulCnt;
                    IMoniker * pmk;
                    WCHAR wcsT[_MAX_PATH];
                    WCHAR wcsPath[2 * _MAX_PATH];

                    // get object path
                    wcsPath[0] = '\0';
                    wcsT[0] = '\0';
                    if( argc 1) {
                    mbstowcs(wcsPath, argv[1], strlen(argv[1]) + 1);
                    wcsupr(wcsPath);
                    }
                    else {
                    fprintf(stderr, "Object path must be specified\n");
                    return(1);
                    }

                    // get print string
                    if(argc 2)
                    mbstowcs(wcsT, argv[2], strlen(argv[2]) + 1);
                    else
                    wcscpy(wcsT, L"Hello World");

                    printf("Linking to object %ws\n", wcsPath);
                    printf("Text String %ws\n", wcsT);

                    // Initialize the OLE libraries
                    hRslt = CoInitializeEx(NULL, COINIT_MULTITHREADED);

                    if(SUCCEEDED(hRslt)) {


                    hRslt = CreateFileMoniker(wcsPath, &pmk);
                    if(SUCCEEDED(hRslt))
                    hRslt = BindMoniker(pmk, 0, IID_IHello, (void **)&pHello);

                    if(SUCCEEDED(hRslt)) {

                    // print a string out
                    pHello->PrintSz(wcsT);

                    Sleep(2000);
                    ulCnt = pHello->Release();
                    }
                    else
                    printf("Failure to connect, status: %lx", hRslt);

                    // Tell OLE we are going away.
                    CoUninitialize();
                    }

                    return(0);
                    }

                    Comment


                    • #40
                      Это, батенька, не C++, а OLE/COM. Когда мыкрософт анонсировал эту хрень, народ в страхе разбежался. Даже после того, как в MFC сделали мало-мальски нормальные интерфейсы, все равно этим говном почти никто не пользуется!
                      Strange women lying in ponds distributing swords is no basis for a system of government!

                      Comment

                      Working...
                      X