I am so sick of this

I am so sick of this.
what a bloated piece of garbage, why do people develop in C# instead of just using C++?

Other urls found in this thread:

en.cppreference.com/w/c/language/struct_initialization
en.wikipedia.org/wiki/Windows_Store
twitter.com/SFWRedditVideos

I absolutely abhor that you can't install every version of .net at once so you may not have the right dependency.

Because it's the Microsoft version of Java, and Pajeet LOVES Java and Java-like things. Pure OOP cancer as far as the eye can see. Bloated runtime envrionments for "cross platform compatibility".

C# is actually a very good language, despite what LARPers will say.
Unfortunately, everything else around it is Microsoft garbage.

Any reason to use it over C++?

MS says it's good for gaymes and hypes for it so I believe them?
t.pajeet

...

Faster development time and no dealing with C++ horrendous STL and other static_cast shit.

The reason C# exists is because the Win32 API is so poorly designed and so poorly documented they had to make tools to automate it to avoid the mess from getting any worse.

Problem is, .NET is even worse since the whole fucking point was design once, run anywhere. It's Java without any of the advantages of Java.


OOP isn't cancer you fucktard. Doing GUI code without OOP makes you look like a fucking idiot who spouts memes about "MUH C".


Rapid Development where you don't have time to unravel the mystery of the badly designed WinAPI.
If you have time, you have no excuse, just be aware you will spend more time trying to get basic shit to work, and sometimes, it'll take days to figure out why something doesn't work.


Not necessarily true, depends on the game you are trying to make.


Filtered.

Perhaps you should quit using Windows, or go back to >>>Holla Forums, cuck.

That's not how it works you fucking moron. Microsoft .net version 4 is ONLY for version 4 applications. In other words, .net is NOT backwards compatible

Could you elaborate in which things need C# instead of C++?
The main thing i can think of is making a fancy looking GUI on windows but there are things like Qt.

So it's even worse than java.


Faster development only werks when you do albanian virus-tier garbage. The fuckery starts with basic things like sql and vs isn't that super helpful for tracking bugs.

Use electron and call it a day my niggers.
Tips fedora

...

I should have explained, nothing needs C#, there are other better options out there (QT, GTK, fuck even Java). C# is really just the .NET version of MFC which is also it's own clusterfuck.

I will say though if you go the pure Win32 way, be prepared to rage. You know those threads where people post what it's like to work at Microsoft? The WinAPI is like a free preview of that.


Two for every version isn't bad, .net has loads more than that. For just .NET 4.5 I have 5 of those installed for whatever reason, and only a few of those C++ Redistributables. For whatever reason I do not have the 2005 one even though I have VS05 installed.

contrary to what autists everywhere believe, the ability to have multiple versions of the same dependency is a good thing. also C++ on windows has the same shit: mscvrt.dll etc, and most C++ crap on windows ships with some unmanaged DLLs in the program folder

Even Holla Forums isn't this retarded.

I love how .net shills flooded the imageboards when the new java version came out. Good timing, but pointless efforts.

The only thing you're proving here is that you're a huge pajeet who can't read and understand MSDN. C# is yet another worthless abstraction layer on a solid API.


If you compile something that requires the redist you are a lazy pajeet. Learn how to set your project up (or better yet, don't use MSVC)

Literally the only C-hashtag programmers are Java fans (indians) and people who know literally nothing about programming except they want to make a "cool video game in Unity xDDDD"

Go back to cuckchan.

"How dare you disagree with me! I'm calling the internet police!"
Why don't you go back to reddit where you belong.

...

Maybe if you had some imageboard culture of your own people would be reposting that instead.

Have you ever looked at MSDN for anything that isn't .NET? It's shit. It's well known it's shit. There are entire forums filled with people asking "What did they mean by this?".

The only thing you prove here is you haven't read MSDN outside of .NET. Fuck off shill.

...

I have never used MSDN for .NET and have only used it for writing win32 API code in c. You are probably the kind of c# fag who can't even write the code to create a window.

Then you should know how shitty it is. Seriously at this point you just look retarded user.

Yes, you're right the documentation is adequate. But the thing itself is such a worthless pile of shit it isn't even funny.

.net core tho

Win32 is such an utter piece of crap for coders that I code on Windows using Cygwin libraries and anything open source that wraps around them in any way.
This way I can avoid at least half of this cancer.

also, btw I use Arch.

Reflection. Also LINQ, but C++ ranges appears to be doing that same kind of thing for C++.

...

Just use STLs gcc version on windows, its much much better than the ms compiler. Ironically STL works for ms and provides the best gcc package for windows.

If you're Holla Forums and can't handle C++. C# is much easier but it's Java so you pay dearly in GC hitching and bloat. Unity devs often get burned porting to xbone because the absurd waste they're used to getting away with on PC destroys console hardware. It's not an easy problem to fix as you have to avoid generating garbage in a language designed for garbage generation to feel natural.

Good post

why microsoft, why

i mean, really its like a couple megabytes so i could care less, but i feel like this should all be combined into one release that does everything
i shouldnt need versions of C++ from 2005

Microsoft is all about maintaining API/ABI compatibility. Their method of doing that is to duplicate code to avoid introducing any compatibility bugs. It works extremely well - you can usually run Windows programs built 20 years ago compared to Linux where binaries rot quickly - but the cost of that is requiring an army of Pajeets to keep all that shit maintained and massive bloat.

I should add, "compatibility bug" to them includes patching a bug people designed around. So they're literally maintaining old bugs for binary compat reasons.

Archfag here.
Thx m8. I'm using GCC 7.1 on Windows.
I use MSVC only when necessary (ABI incompatibilities).
I'm using Cygwin libs mostly for porting stuff over to Win32, as it makes the work go much faster.

Compare win32 code for GUI programs to programming for X, this is the pot calling the kettle black. Please try and write something with your window manager, and then try and write something with win32, you'll see it's much nicer to use.


Not only that, but win32 code is quite a bit cleaner and more readable. So, it's not a high ground, you're just either hiding it behind abstraction layers or you haven't tried to do the kinds of tasks the the windows API is actually used for on Linux.

Everyone knows that GUIs are only for pajeets. Real programmers use CLI only, even when on the interbutts.

Good luck trying to earn even a nickel on Windoze users. If you can't design and make a proper GUI you're doomed to starve.
Also, GUI without OOP would be retarded. Even if you make GUI in C you should still use OOP.

Explain win32 and X then

Damn, you are pajeet as fuck. Everyone knows real programmers can eat from their foot or beard.

A mistake. A big one, hence why MFC and .NET exist.

And real programmers also wash that down with a refreshing Pepsi right after smashing a water bottle on stage.

It's the Choice, of a GNU generation.

It a sad but not unexpected day when .net compatibility is an even worse clusterfuck than rpgmaker editions.

MFC and .NET are cancer. They're literally just wrapper libraries around the real API (win32) that make it pretend to be an OO system so that pajeets can shit out software. Just because you fell for the OOP meme in your "into to CS" class doesn't make it real.

I've been doing C++ for a long time, mostly on Linux, and win32 is the cancer. I don't blame Windows programmers at all for wanting to use .NET. C++ on Windows is a hell of functions taking 10 arguments that are structs of 50 arguments full of NULLs where 95% of the API is secretly deprecated but you don't know that until you hit something impossible to do without rewriting your code to use a totally different pathway. Every time I have to write something low-level for that mess they've got a new way to do async I/O that promises to not be as shit as the last and it's always shit. Porting anything from Linux easily increases the amount of code 10x. Even printing error messages is so fucking involved you'll need to write library functions for it.
(((reddit space)))
I've been doing it for a long time like I said so I remember back when you needed to literally create thread trees to get around WaitForMultipleObjects having a low limit on waitables (64 I think), IOCP (which is totally bullshit behind the scenes, if you were thinking it was some magical kernel thing) having no way to schedule the threads or force affinity so it had to be avoided for fast networks, having to call the driver directly to get around tcpip.sys literally having been crippled (buy pro, goy! The artificial limit is higher!), their 'edge triggering' which had no way to disable level triggering for read AND write, etc.. It's the shittiest OS experienced from the win32 level.

Because pajeets don't into C++

They do and it's horrible.

That's nothing, check THIS out:

void vkr_init_pipeline(vkr_t *vkr,jmp_buf jump){ //init pipeline VkResult res = 0; VkDynamicState dyn_state_list[VK_DYNAMIC_STATE_RANGE_SIZE] = {0}; VkPipelineDynamicStateCreateInfo dyn_state_info = { .sType = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO, .pDynamicStates = dyn_state_list, }; VkPipelineVertexInputStateCreateInfo vi_state_info = { .sType = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO, .vertexBindingDescriptionCount = 1, .pVertexBindingDescriptions = &vkr->vi_binding, .vertexAttributeDescriptionCount = 3, .pVertexAttributeDescriptions = vkr->vi_attribs, }; VkPipelineInputAssemblyStateCreateInfo asm_state_info = { .sType = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO, .primitiveRestartEnable = VK_FALSE, .topology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, }; VkPolygonMode mode = VK_POLYGON_MODE_FILL; if(vkr->dev_features.fillModeNonSolid == VK_FALSE){ con_printf("WARNING: Non-solid fill modes are not supported by your video card! The value of r_wireframe has been discarded!"); } else{ if(cvar_geti("r_wireframe")){ mode = VK_POLYGON_MODE_LINE; } } VkPipelineRasterizationStateCreateInfo rst_state_info = { .sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO, .polygonMode = mode, .cullMode = VK_CULL_MODE_NONE, .frontFace = VK_FRONT_FACE_COUNTER_CLOCKWISE, .depthClampEnable = VK_TRUE, //Selym says he had to change this to prevent errors. Why? .rasterizerDiscardEnable = VK_FALSE, .depthBiasEnable = VK_FALSE, .lineWidth = 1.0f, }; VkPipelineColorBlendAttachmentState att_state[1] = {(VkPipelineColorBlendAttachmentState){ .colorWriteMask = 0xf, .blendEnable = VK_TRUE, .alphaBlendOp = VK_BLEND_OP_ADD, .colorBlendOp = VK_BLEND_OP_ADD, .srcColorBlendFactor = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA, .dstColorBlendFactor = VK_BLEND_FACTOR_SRC_ALPHA, .srcAlphaBlendFactor = VK_BLEND_FACTOR_ONE, .dstAlphaBlendFactor = VK_BLEND_FACTOR_ZERO, },}; VkPipelineColorBlendStateCreateInfo cb_state_info = { .sType = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO, .attachmentCount = 1, .pAttachments = att_state, .logicOpEnable = VK_FALSE, .logicOp = VK_LOGIC_OP_NO_OP, .blendConstants[0] = 1.0f, .blendConstants[1] = 1.0f, .blendConstants[2] = 1.0f, .blendConstants[3] = 1.0f, }; VkPipelineViewportStateCreateInfo vp_state_info = { .sType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO, .viewportCount = 1, .scissorCount = 1, }; dyn_state_list[dyn_state_info.dynamicStateCount++] = VK_DYNAMIC_STATE_VIEWPORT; dyn_state_list[dyn_state_info.dynamicStateCount++] = VK_DYNAMIC_STATE_SCISSOR; VkPipelineDepthStencilStateCreateInfo ds_state_info = { .sType = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO, .depthTestEnable = VK_TRUE, .depthWriteEnable = VK_TRUE, .depthCompareOp = VK_COMPARE_OP_LESS_OR_EQUAL, .depthBoundsTestEnable = VK_FALSE, .stencilTestEnable = VK_FALSE, .back = { .failOp = VK_STENCIL_OP_KEEP, .passOp = VK_STENCIL_OP_KEEP, .compareOp = VK_COMPARE_OP_ALWAYS, .depthFailOp = VK_STENCIL_OP_KEEP, }, .front = { .failOp = VK_STENCIL_OP_KEEP, .passOp = VK_STENCIL_OP_KEEP, .compareOp = VK_COMPARE_OP_ALWAYS, .depthFailOp = VK_STENCIL_OP_KEEP, }, }; VkPipelineMultisampleStateCreateInfo ms_state_info = { .sType = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO, .rasterizationSamples = VK_SAMPLE_COUNT_1_BIT, .sampleShadingEnable = VK_FALSE, .alphaToCoverageEnable = VK_FALSE, .alphaToOneEnable = VK_FALSE, .minSampleShading = 0.0, }; VkGraphicsPipelineCreateInfo pipeline = { .sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO, .layout = vkr->pipeline_layout, .basePipelineHandle = VK_NULL_HANDLE, .pVertexInputState = &vi_state_info, .pInputAssemblyState = &asm_state_info, .pRasterizationState = &rst_state_info, .pColorBlendState = &cb_state_info, .pTessellationState = NULL, .pMultisampleState = &ms_state_info, .pDynamicState = &dyn_state_info, .pViewportState = &vp_state_info, .pDepthStencilState = &ds_state_info, .pStages = vkr->shader_stages, .stageCount = 2, .renderPass = vkr->render_pass, .subpass = 0, }; res = vkCreateGraphicsPipelines(vkr->device,VK_NULL_HANDLE,1,&pipeline,NULL,&vkr->pipeline); if(res != VK_SUCCESS){ longjmp(jump,vkr_error_vmem); }}

define OOP

Vulkan has the excuse that it's a message-based API for hardware that for some reason requires everything be batched into huge blocks for performance.

Preventing carpal tunnel and chronic depression.

>oyy veyy c++ so bad goyim, use (((token new technology))) instead

Is that C++?
What is the ".foo = bar" syntax?

That's C99 , this is the syntax: en.cppreference.com/w/c/language/struct_initialization

It's the only feature Linux actually invented, and the one that would actually benefit from Windows' botnet-ness, yet all MS has is still just OS updates, a sprinkling of 3rd-party drivers, and semi-automated uninstallation.

It's been even more retarded on 300MHz 64MB PocketPC ARM toasters. Imagine how many "very serious enterprise apps" are developed this way...

windows 10 has a package manager though

Literally worse than the one Slackware has had since 1994.

HOW DO YOU KNOW MY YEAR OF BIRTH???????????????

You don't really need x86 versions tho

?

en.wikipedia.org/wiki/Windows_Store

slackware doesn't have a package manager. it has a convenient system of pre-config'd tarballs which are hassle-free to compile and install.
sage for off-topic.

come again?

not close. you're probably looking into recommending Vala as a runtime-bloat-free replacement for C# and Java-style languages.

vala is abandonware

Oh, that ...