Реклама

Настроить
 
 

сирашп фтв  

31 Октябрь @ 00:07
В цпп меня всегда пугал синтаксис. Взять хотя бы пример из недавней статьи на хабре.


LPVOID lpProc = VirtualAllocEx(processHandel, NULL, ProcSize, MEM_COMMIT, PAGE_EXECUTE_READWRITE );
LPVOID lpParams = VirtualAllocEx(processHandel, NULL, 1024, MEM_COMMIT, PAGE_READWRITE );
...
DWORD ThreadID;
HANDLE hThread = CreateRemoteThread(processHandel, NULL, 0, (LPTHREAD_START_ROUTINE)lpProc, lpParams, 0, &ThreadID);
if (hThread == NULL) {
sprintf_s(buffer, "Error creating thread");
addLogMessage(buffer, 1001);
}

LPVOID, епта! Сломай язык нах! Ещё эта гора капса, тайпкастов и процедурный стиль API. Если вдуматься, для европейца это звучит примерно так:

ЛПХУЙ ЛППРОЦ = ВИРТУАЛНАЛОЖИПЛЮС (РУЧКАПРОЦЕССА, НИХУЯ, РАЗМЕРПРОЦ, ВПАМЯТЬНАСРИ, ПОДКАЧКУКАЗНИТУДАСЮДА);

Или так:

ДАСЛОВО НИТЬИД;
РУЧКА ХНИТЬ = СОЗДАТЬУДАЛЁННУЮНИТЬ(ПРОЦЕССРУЧКА, НИХУЯ, НОЛИК, (ЛПНИТЬ_НАЧАЛО_РУТИННОЕ)ЛПРОК, ЛППАРАМЕТРЫ, НОЛИК, ИНИТЬИД);
ЕСЛИ(ХНИТЬ == НИХУЯ) {
СНАПЕЧАТАТЬФ(БУФЕРА, "Пиздец при создании нити");
ДОБАВИТЬЛОГСООБЩЕНИЕ(БУФЕРА, АДИНАДИНАДИН);
}


Навеяно общением с [info]rushtf, там же и придумано.

Впрочем, такой пиздец в основном характерен при работе со всяким винапи, сиплюсплюс может выглядеть красиво, я видел.
Метки:
( 21 комментарий — Post a new comment )
Rush: awesome[info]rushtf on Октябрь, 30, 2009 21:16 (UTC)
СИРАШП
kombo_th: bulba[info]kombo_th on Октябрь, 30, 2009 21:30 (UTC)
другое дело brainfuck
Cluster[info]cluster_d on Октябрь, 30, 2009 21:31 (UTC)
"Pure C" лучше всех. Самый низкоуровневый и самый читаемый.
artyfarty[info]arty_ru on Октябрь, 30, 2009 21:33 (UTC)
Разве он не превратится в такое же месиво, когда подтребуется винапи с его капсовыми константами?
Cluster[info]cluster_d on Октябрь, 30, 2009 21:35 (UTC)
А я не говорил ничего про винду. Он особенно рулит при программировании под самые разные другие платформы, особенно всякие устройства, где идёт прямая работа с железом. Это же по сути портируемый ассемблер. Ты же не сможешь на C# написать программу для Wii, DS или AVR например :)
artyfarty[info]arty_ru on Октябрь, 30, 2009 21:39 (UTC)
Конечно рулит, он может рулить много где, поэтому не раз хотелось нырнуть в этот мир поглубже.

Но писать на нём обычные приложения под винду сейчас, в 2009ом — по-моему глупость.

Под линуксом больше впечатляют четырёхстрочные вызовы gcc, генерируемые мейком.
Cluster[info]cluster_d on Октябрь, 30, 2009 21:44 (UTC)
Может быть и глупость, но C++ даёт нативный машинный код, а не байт-код для дотнета. Можно долго спорить, выясняя что лучше, а что хуже. Всё хорошо для своих целей.
artyfarty[info]arty_ru on Октябрь, 30, 2009 21:52 (UTC)
Я склонен поддерживать любимый аргумент преподов: дешевле докупить ещё один сервер, чем написать высокопроизводительный и неглючный продукт на плюсах.

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

Я вырос на языках высокого уровня, и конечно мне так проще и удобнее.

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


Другое дело — мобильные платформы. Хотя заставили же сонерики летать J2ME, а не-помню-как-его-мессенджер-для-WM-на-дотнете уделывал многие нативные приложения. И андроид, вроде как явашный, летает.
artyfarty[info]arty_ru on Октябрь, 30, 2009 21:55 (UTC)
Ну и ОС, драйвера конечно.
Си не умрёт. Хотя немнжко разобраться в библиотеках и синтаксисе стоило бы.

Просто потому, что функции с нечитаемыми именами работают не быстрее функций с читаемыми именами…
Cluster[info]cluster_d on Октябрь, 31, 2009 09:34 (UTC)
В никсах функции гораздо более красиво называются, имхо.
artyfarty[info]arty_ru on Октябрь, 31, 2009 10:33 (UTC)
Не сильно видел, так что не знаю.
Cluster[info]cluster_d on Октябрь, 30, 2009 21:58 (UTC)
Моя практика показывает, что .NET приложения по производительности в разы обгоняют аналоги, написанные под WinAPI. А всё за счёт лёгкости оптимизации, простой работы с потоками и простой их синхронизации (ключевое слово "lock" в самом языке - это великолепно!)
Но цели бывают разными. Например нужно вот нам было сделать утилиту для наших абонентов, которая под Windows XP автоматически создаёт и настраивает подключение к Интернету. Как ты думаешь, у многих после переустановки винды стоит фреймвок? Думаю, не надо объяснять что было выбрано.
Да, я искренне надеюсь, что XP скоро вымрет.
artyfarty[info]arty_ru on Октябрь, 31, 2009 10:34 (UTC)
Да.

А когда я колдовал с директиксом, то в установщик пришлось внедрить несколько assemblies для работы с ним…
Cluster: Meerkat[info]cluster_d on Октябрь, 31, 2009 10:23 (UTC)
Кстати, мож ты подскажешь? Создаю для своей проги стандартный проект установки. Во время установки пользователь, само собой, выбирает путь, куда ставить программу. Как потом можно узнать путь, куда была установлена моя программа? Я в реестре не нашёл... Или можно как-то сделать, чтобы установщик куда-то это записывал?
А то все у нас в компании теперь устанавливают вот эту прогу: http://cluster-d.livejournal.com/312635.html
А начальник сделал, чтобы она запускалась при работе с клиентом. Но это рассчитано только на то, что пользователь при установке не будет менять путь. Иначе он не знает откуда её запускать :(
artyfarty[info]arty_ru on Октябрь, 31, 2009 10:31 (UTC)
Ни разу не пользовался студийным сетапом.
Ибо есть InnoSetup, который охуенен, безграничен и прост одновременно.
Cluster[info]cluster_d on Октябрь, 31, 2009 10:33 (UTC)
Спасибо, попробую.
А он фреймвок ставит, если он не стоит?

Edited at 2009-10-31 10:34 (UTC)
artyfarty[info]arty_ru on Октябрь, 31, 2009 10:39 (UTC)
Инно-сетап — это как раз довольно лоулевел конструктор.
Представляет из себя редактор файлов сетапа в INI-формате, и компилятор с дебаггером. И подробную документацию в chm.

Ты в секциях ини указываешь чо, куда и при каких условиях копировать, какие ключи прописать, что запустить, итп. Можно довольно сложные штуки делать.

А вот я с первого раза нагулил то, что тебе нужно: http://www.codeproject.com/KB/install/dotnetfx_innosetup_instal.aspx
Cluster[info]cluster_d on Октябрь, 31, 2009 10:41 (UTC)
Я тоже уже нагуглил это :)
artyfarty[info]arty_ru on Октябрь, 31, 2009 10:42 (UTC)
самому аж интересно стало, качаю)
artyfarty[info]arty_ru on Октябрь, 31, 2009 10:44 (UTC)
Ах-да, там же ещё скриптинг на паскакале родном. Жесть какая.
Cluster[info]cluster_d on Октябрь, 31, 2009 17:19 (UTC)
Вопрос снят. Оказывается это всё можно сделать в студийном.
Надо было просто кликнуть правой кнопкой мыши и выбрать ВИД->Реестр

Я смотрел только меню "Добавить", ведь мне добавить запись в реестр надо было :)

Оставлю студийный инсталлятор по ряду причин.
 
 

Реклама

Настроить