It is a technical term defined by a bunch of people who got together and agreed that their opinions (however educated they may be) are more correct than other people's. That's extremely subjective, and not universally accepted.
Technical terms have definitions that transcend the opinions of people who use them. When I say "byte", everyone knows exactly what I mean, as it's a unit of measurement. When I say "agile", it could mean any number of different things, depending on context. When people say "open source", the thought that comes to a lot of people's minds is simply "I can see the _source_ code, because it's out in the _open_."
It's subjective, and, frankly, annoying. It shouldn't matter how something is licensed, because the most important aspect of software is whether or not it provides value and helps me do my job. Bickering about semantics doesn't get work done.
Honestly, I wouldn't respond to anyone who compares political systems with software development paradigms. Realistically, it's just really hard to compare the two directly, and anyone who says otherwise is trying to sell you something.
Eh, not really, it's just going to require an exponential increase in computing power. They already have the platform, in theory it would just be about scaling.
That said, it's kind of a huge scaling problem. If it really is a matter of throwing more hardware on it, and they currently use, say, 100 servers, they're going to need 429496729600 servers to get the same times they are getting now.
Not who you replied to, but I, personally, think it boils down to trust. Using someone else's code, _especially_ if it's functional, should be the same as using the proverbial black box. You shouldn't need to understand their code in order to use it with your own. The same should be true of your own code, really. You shouldn't need to remember implementation details of a function you wrote in order to use it in elsewhere in your code.
I know there's then the issue of security, freedom, openness. . .whatever. But if you're working on a project with someone else, and you don't trust them, the project's probably doomed to fail to begin with.
I liked this article, but I feel like it's just a bit too. . .matter of fact. "FP _will_ make your linter do your work for you", things like that.
("Even if you haven't already-made a mistake, and are just thinking of making a change to a codebase, the # FP version of the code is a lot easier to think about than the # Imperative version" was particularly bad about this. I have never had a problem paralellizing a procedural program that would have been solved using FP)
It is _much_ better at being inclusive and not preachy than other articles of similar scope. But I would prefer if posts like this tried to explain functional programming without feeling the need to put down other paradigms. And, to be clear, I'm a big fan of FP, and have been using many of its tenants for a long time now.
Functional programming is just a different way to structure a code base. Some people are better able to grasp how data flows through a maze of functions. Some people are better able to grasp how an object interacts with other objects.
In the end, it's all just a sequence of instructions executed, in order, by a machine. The true correct way of writing code is: However you can get that machine to do what you want it to do, while still being able to make changes to its behavior.
Frankly, it's just a different way to think about structuring a code base.
Some people think better functionally, some people think better procedurally, but, in the end, it's all just a list of instructions, executed in order by a machine.
I'll never understand the need to poopoo all over someone else's way of thinking (not you, the guy you're replying to).
You're not alone. I'm of the mind that it doesn't matter what the license, state of the source, or whatever, I'm here to get things done, not quibble over trivialities and semantics. When I can see the source for something, I call it open source. If the OSI has a problem with that, I invite them to explain to me how my definition affects their goals in any way, shape, or form.
I like the OSI. I use a lot of stuff that they endorse. My 3D printer is OSI certified (or whatever the proper terminology is). But I use my printer to solve problems, and it being open or closed source doesn't really matter, so long as it helps me solve problems.
I like the FSF. I use a lot of stuff that they endorse. One of the operating systems I use is FSF certified (or whatever the proper terminology is). But I use this operating system to solve problems, and it being open or closed source doesn't really matter, as long as it helps me solve problems.
I like Microsoft. I use a lot of stuff that they make. One of the operating systems I use. . .you get the idea.
Can you blame us? This is largely a subjective matter, and the different organizations who talk about this kind of thing have often-conflicting ideologies about how all this works.
When I hear "open source", I don't know which camp the speaker is sitting in. It's perfectly reasonable to get mixed up sometimes.
I'm just going off of what I hear vocal "FOSS" advocates screaming at me on online forums. They tell anyone and everyone, loudly, that licenses are terrible, but at least some are decent, and that if I can't do what I want, it's not free software, even if it's open source.
Turns out opensource.org disagrees with them. But it doesn't seem like FSF (or rather, RMS, and the FSF by proxy) agrees[1].
In the end, I don't really have a horse in this race. I just write code. I don't care how my company's legal department chooses to protect it.
Frankly, I find it kind of tiresome that there's such a big argument over this stuff.
That's interesting. I didn't actually know that, I figured there'd be some kind of shim in place to make it work. Incidentally, this doesn't mean that Wine runs 16-bit Windows programs particularly well. I did a bit of quick research, and it turns out you need to jump through some hoops to run 16-bit on Wine.[1]
I maintain that Windows is always a better choice for running win32 applications, unless you don't have that option. I'll also note that I'm not saying Wine is useless, or anything along those lines. I merely take issue with the idea that it runs win32 applications "better" than a system that's designed to be backwards compatible with win32 applications by the same entity that made win32.
No, it really doesn't. Windows has had backwards compatibility as a huge priority for a long time, often to their detriment. You can literally update a machine from Windows 3.1 to windows 10, and programs written for Windows 3.1 will still work.[1]
EDIT: TO be clear, this is a video of upgrading to Windows 7, and there is a direct upgrade path to 10 from 7. Also, as per another user's reply, this doesn't hold true for 64-bit. However, that doesn't change the fact that Wine doesn't and really can't run win32 better than win32 does.
Open source does not mean you are free to distribute the code, necessarily. It literally just means that the code is available for inspection. Paid-for open source software isn't a new thing.
You're thinking of _free_ open source software. While I'm not a huge FOSS-head, there is a distinct difference between "_free_ and open source" and just "open source". It's all in the licensing.
I could, in theory, write a license that says, basically, you can't distribute my source code, but you can look at it, compile it, and even alter it to fit your needs. In fact, a lot of licenses on older software projects allowed for exactly that.
I could also release a license that says that you can only redistribute my code if you haven't purchased it, but if you have purchased it, you're not allowed to redistribute it. Pointless? Yeah, probably. But that's still a valid license.
Anything goes, as long as you can come up with the proper legalese to put in the license.
EDIT: I get it, some people support OSI's definitions, some FSF's, and apparently sharing the opinion of one has angered the supporters of the other. A lot of this is subjective, and I know that. I'd appreciate it if you discussed and voted accordingly.
I'm having a bear of a time trying to figure out what podcast it was. It might even have been a YouTube video. I've been going through different permutations of search terms to find it.
I'm worried it might have been .NET Rocks![1] They have a great podcast, but their episodes aren't indexed by Google because of their website structure.
I'm gonna keep looking, and even check my home computer's history when I get home tonight, but I wouldn't hold your breath. Someone a bit above linked to a book that I'm pretty sure was the impetus behind the podcast I listened to, so it might be worth giving that a read.
Zachtronics is awesome. Not only do they make some of the best puzzle games in the world, their write-ups are always full of juicy details.
I really liked their modern take on "retro" programming. I am not of the mind that we need to start teaching every developer how to hack away at assembly, but there's no denying that working on limited hardware (like what is still found in embedded devices) benefits greatly from at least a passing familiarity of it. I think that's kind of what their goal was and is with games like TIS-100 and SHENZHEN I/O. Not necessarily to give seasoned assembly hackers fun games to play, though it certainly does, but to give younger programmers an idea of what working with low-level code can look like.
This article has made me want to re-install TIS-100 and see if I can;t finish some of the levels I struggled with. . .
Emphasis mine.