Hacker News new | past | comments | ask | show | jobs | submit login

Can it build a C++ SFML application on windows?

I am now annoyed by the claims of those build systems. My own experience is using a visual studio project manually, and writing classic makefile for linux. Those are things I can't avoid learning.

The root of the problem is that windows/unix do things differently, but that doesn't change anyone's understanding of how a compiler/linker works.

I am against those build system: I need to learn how to use them, and I need to understand how they manage to "reunite" different toolchains.

Generally, I would guess I spend less time building something on each system with either visual studio/makefiles, than using a meta-build system.

Microsoft is at fault for making things differently, of course, but attempts to reunite platforms are often quite misguided

Of course, people who write libraries need those build systems, obviously, although I don't know what any other build system does better than CMake.




>The root of the problem is that windows/unix do things differently, but that doesn't change anyone's understanding of how a compiler/linker works.

Or that cpp ecosystem is so fragmented that you have X various compilers, IDEs, debuggers, build systems and package managers.

Insanity for anyone who worked in ecosystems like go, c#, rust


> Insanity for anyone who worked in ecosystems like go, c#, rust

On the other hand, I can easily pick a part of the "C ecosystem" that suits me really well, for there is so much choice! In rust, I'm stuck with some conventions that I must learn to love or else. In my case I like rust the language but cannot stand the ecosystem (most notably, the cargo tool). Similar thing for javascript: the language is OK, but the node ecosystem is nuts.


yeah, you get to choose the cutlery when all you really want is to eat.


Of course I need to choose cutlery. Should I eat with plastic fork? I prefer not to, for example.


That’s your choice, but don’t complain about rest of people wanting to just finish their meal and do something meaningful in their life.


I don't understand, how we found ourself in the world where "one way, one tool, one repository" is good thing. It is totalitarianism, you know? It is considered bad in politics and social life. Diversity is considered good for healthy ecosystems!


Dont you think that applying political/social concepts to tech isnt perfect?

I have exp. With various tech stacks and I know where my life was way easier when it comes to basic things


There is no perfect analogy anywhere, of course, each analogy is flawed in one or another way.

But I don't think we should separate politics, social dynamics and tech. Because everything (unfortunately for us, techno geeks) is politics, as everything is done by people and politics is relationship between groups of people.

Your last sentence is perfectly applicable to politics too: it is way easier to be adult in totalitarian society, if your will to align yourself with "main party line", than in democratic society. You need to make much less choices yourself. But if you cannot align to this line, your life becomes miserable.

I think, that any monoculture is limited and bad. In tech too.


> tech wagie: I just want to make my life easier and not learn billions incompatible ideas made by billions of peoples

> tech bro: diversity is important, convenience is totalitarian, everything you do is politics


I laughed

sound like a baby Richard Stallman (I like open source but still)


Should we diversify the DMV or the IRS?


In my opinion, yes. But they ate diversified in a way already: I have driver license and pay taxes, but never contacted with DMV or IRS.


So yeah, what you're missing is that there are natural monopolies. One such would be a centralized tax collector for a nation state. Some others would be a centralized copyright, patent, vehicle or real estate registrar.

In terms of software it helps to have a centralized repository for code as this eases development quite a bit. Imagine you need libraries from multiple repositories. That's a pretty big pain point. Eventually everyone will migrate to just a single source.

Again, these are natural monopolies and primarily driven by the network effect.


Totally! Let’s return back to times of dozens incompatible connectors too, diversity is important!


Great example. First of all, we need dozen connectors. For network, for power, for special protocols, for special environments. No, USB-C doesn't cover it all, from space station to miniature device which needs I2C or I2S connection, for example.

But lets look at USB-C alone*. It is USB-C, all USB-C is the same from the user-faced side. But they are different inside! There are a lot of variations, with different PCB footprint, different certification (aviation or automotive grade connectors vs "simple" ones), different weather protection, different mounting options. It is great that we have a LOT of different vendors for USB-C, and A LOT of different USB-C connectors!

USB-C is standard, with multiple vendors. As C/C++. One connector. Multiple vendors. Diversity.

[*] - and close eyes on situation with USB-C which is worse than ever, with all these functions which can or cannot be supported and you can never know what is support before trying, multiplied with same problem with myriad of cables which all look the same, but works differently. So, really, USB-C is bad example. But lets pretend it is good.


You’ve completely missed the analogy.

As a user I couldn’t care less about all the bullshit innards of USB-C. All I care is that I can charge all my Android devices, all my iOS devices and my MacBooks with the same cable. As a developer I couldn’t care less whether it’s CMake, XMake, Gradle, Autotools, Bazel, Webpack, Bash script or something else.

Is it standard? Is it not absolutely awful? Yes - let’s go, no: can you afford to pay devs to put up with learning yet another bullshit tool? Yes - let’s go, no - keep it to your hobby project until it reaches critical mass and becomes standard.


"Healthy ecosystems" is a disanalogous concept here.

"Diversity" is good in an ecosystem when you have multiple species that complement each other, forming a trophic chain (like plants, herbivores, carnivores, and decomposers).

What you're defending is having two or more species that compete with each other, which, biologically, is a scenario that results in a single victor: https://en.wikipedia.org/wiki/Competitive_exclusion_principl...

The resultant monopoly is good at least initially because the victor, ideally, was the best at the niche it competed for. Having suddenly no competition allows it to stagnate, though, compared to if it had constant competition. Biology solves this with constant, random mutations in a cycle of death and reproduction. Maybe that's what WG21 represents for C++? ;D

In general, though, when you're "trying to do a narrow thing", diversity seems bad all around. Python beat Ruby because it was the totalitarian "there's one right way to do a thing" alternative, which was better. Apple stuff works better because it's a totalitarian design from the hardware on up (I admit this as an Apple hater). Cargo works better than CMake because it's an integrated and opinionated build system.

The "narrow thing" could even be a political agenda and a particular subset of social interactions, in which case diversity can also be viewed as negative politically and socially. See political gridlock and how much strife exists between races, religions, classes, and genders. For example, take the "don't go alone in a room with a woman" spiel that OpenBSD guy blathered about. He seemed to claim that women of low status with political axes to grind would seize clout by claiming false sexual harassment in situations without witnesses. If we suppose that scenario exists, it would impossible were there no diversity of gender/sexuality/politics/status in those environments, which would be better for the "narrow thing" of "have a BSD conference or whatever with no drama".


GCC stagnated before llvm/clang becomes noticeable player.

And other C/C++ implementations not so much compete with each other. MSVC++ is Windows-specific. KeilC supports obscure 12-bit microcontrollers. etc.

Even in any economic theory I know of (I admit, I cannot know everything!) monopoly is not praised, but rather considered bad.

There are myriad of Linux distributives. Is it bad, as they compete each other? I don't think so.

Kotlin give Java big push to become better language.

There are a lot of examples of productive competition, in tech too.


> GCC stagnated before llvm/clang becomes noticeable player.

Became?

Recently, it seems like LLVM's libc++ has stagnated, and clang is basically just copying GCC. If GCC stagnated before, it's nice competition seems to've rekindled its fire. :p

> monopoly is not praised, but rather considered bad.

Because economic monopolies are not self-competitive like organisms are and use their market capture to extract more value, unlike CMake or Linux (probably).

> There are myriad of Linux distributives. Is it bad, as they compete each other?

In that the labor required to make and maintain a good distribution is divided among them, it can be considered bad. In that users have to choose between an array of similar things, it's also bad for them. (If the things are very different, the choice becomes clearer, but then we move away from competition and toward complementing in the ecosystem sense.)


I mean, if it supports vcpkg (which is also cross-platform) natively then this should be trivial, am I missing something?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: