Jump to content

  • Log In with Google      Sign In   
  • Create Account

Programming: Linux vs. Windows?


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • This topic is locked This topic is locked
41 replies to this topic

#21 Álvaro   Crossbones+   -  Reputation: 13912

Like
1Likes
Like

Posted 09 September 2011 - 12:35 PM


I became a much better programmer when I moved from Windows to Linux, primarily because I was forced to learn how to write portable code, but the key is that I was exposed to both.


And here's the proof that knowing Java alone will make you superior programmer.


That made no sense.

Sponsor:

#22 elondon   Members   -  Reputation: 242

Like
1Likes
Like

Posted 09 September 2011 - 12:53 PM

*Not directed at anybody specifically* - but I do find many "linux people" consider themselves superior because they use a much more manual, less-visual, and low level process to build things. While it is true in some cases, it is a generalization to assume that "linux person" understands internals and OS processes any more than I understand my Windows environment. I'm certainly not knocking linux - I have my linux VM and I believe it is a terrific OS. I just prefer developing in Windows, for Windows - mainly because as a professional, my market potential is so much larger but also because I really enjoy the OS.

I use a ton of visual tools and they make my job easier and more productive. Having a nice tool belt is a good thing.

One important thing is if you plan on building enterprise software in a corporate environment, Linux is almost completely useless on the front-end. It's the same anywhere you have standard computer users doing their job with Windows. That's just the way it is. Sure, linux comes in handy for scripting on the back-end but that's the extent. Obviously you can build on linux and compile/run on windows but it isn't very practical and the users will not have many of the tools they are used to unless you really go out of your way - not to mention you need your user's environment to test. Java, .NET, VB, Excel - all tools that tend to dominate offices.

I would never argue that "my tools are better than your tools" or "I'm better than you because of my tools" and I avoid people who employ that attitude. :)
"For any absurd set of thinking, you can probably find a non-zero percentage of the population who is utterly convinced of its truth."

#23 Bregma   Crossbones+   -  Reputation: 5441

Like
0Likes
Like

Posted 09 September 2011 - 01:12 PM

Buy a copy of MS Windows and obtain one or more Linux distros and install them all on your Macintosh. Shiny.
Stephen M. Webb
Professional Free Software Developer

#24 elondon   Members   -  Reputation: 242

Like
0Likes
Like

Posted 09 September 2011 - 01:24 PM

Buy a copy of MS Windows and obtain one or more Linux distros and install them all on your Macintosh. Shiny.



Good call.

I run a Mac Pro at the office with 8 cores and 16gb and have all my windows stuff in VMs. DB Server, App Server, Win7 dev box - and maybe a distro of linux just for fun. :)
"For any absurd set of thinking, you can probably find a non-zero percentage of the population who is utterly convinced of its truth."

#25 Álvaro   Crossbones+   -  Reputation: 13912

Like
0Likes
Like

Posted 09 September 2011 - 01:58 PM

One important thing is if you plan on building enterprise software in a corporate environment, Linux is almost completely useless on the front-end.


On the other hand, if you plan on writing software to run on servers, most industries don't use Windows.

It's also worth noting that virtually every OS out there but Windows follows the POSIX standards, so a lot of what you learn on Linux also works on Mac OS X, OpenBSD, Android, iOS...

#26 romer   Members   -  Reputation: 323

Like
2Likes
Like

Posted 09 September 2011 - 02:28 PM

It's been said before, but really, it boils down to 1) who your target end-user is and 2) what's your personal preference. If you're familiar with Windows and will be writing software for people running on Windows, then by all means use Windows. Ultimately, in terms of getting stuff done it shouldn't matter because you can setup efficient development tool chains in either. Under Windows, the de facto standard is Visual Studio, which bundles everything you'll care to use for day-to-day activities: editor, compiler, linker, debugger.

Under Linux, you're more likely to use (at first) a more decentralized tool chain. You'll pick an editor (vim, emacs, nano, joe, whatever) and do all your coding in all that. You'll more likely than not use GCC for compiling and linking, on the command line. It's definitely a different approach than you'll typically see using Visual Studio, but after fumbling a bit with the options, it's not really that hard to use. Eventually though hand compiling is bloody tedious, and then you'll look at some sort of build system. The foundation for a lot of build systems under Linux is GNU Make and the Makefile. You may write a couple of these for some small projects, but then realize that writing these, too, by hand tends to suck. And that's when you start learning to use one of the many open source build systems out there. For the longest of time, and even still today, the Autotools package has been the de facto standard for building projects from source under Linux. I damn well near shot myself trying to figure out how to use it effectively and instead switched to CMake. If I were to recommend an open source build system for someone to use, it'd definitely be CMake. Once things are built though, and you start running your programs, you'll then start using GDB (with possibly one of its many front-ends) predominantly for your debugging purposes.

Now I may make Linux to sound like this PITA to use on a day-to-day activity, but honestly, once you get the initial project files setup, it's really not that bad. There are also IDEs under Linux that (I would guess) automate a lot of the setup, for instance tools like Eclipse CDT (note, I've never used it, so I don't know what all it provides) and bundle your tool chain into one place if you like that approach. Personally I find it useful to at least be aware of what these environments are doing for you behind the scenes because at the end of the day, they're still using a lot of the tools I mentioned above, and if anything screwy happens from within the IDE, it might be helpful to understand exactly which tool failed when trying to diagnose the problem.

As far as third party library support goes, it's pretty much a toss up. You can always find examples that go both ways where a library is easy to configure and install under one OS and not the other. But that's the "fun" with cross-platform, open source software. Linux package managers may make this easier because they'll (for the most part) know how to also install whatever additional third party dependencies are needed, but for well known and popular libraries, typically I've seen developers either 1) provide a link to the exact dependencies you need to build their software, 2) provide binary distributions to the dependencies you need, or 3) bundle the source code for the dependencies you need with their software. Regardless of whatever OS you choose, you're going to find some library or tool that's going to require some finagling to get working right -- just comes with the software development gig.



#27 eugene2k   Members   -  Reputation: 237

Like
0Likes
Like

Posted 09 September 2011 - 02:49 PM

I have a really hard time understanding how is it that pressing "F7" is worse than typing "cd pathto/folder" then "make all" or hitting "F5" is worse than typing "gdb myapp run"

It's easier. But having it easier means that in an environment without one, you're lost. All you know is that you need to press F5 to debug a project, or F7 to build/compile. You don't actually learn how it works under the hood.

note, I've never used it, so I don't know what all it provides


It provides you with coffee time during boot ;)

#28 elondon   Members   -  Reputation: 242

Like
0Likes
Like

Posted 09 September 2011 - 02:54 PM


One important thing is if you plan on building enterprise software in a corporate environment, Linux is almost completely useless on the front-end.


On the other hand, if you plan on writing software to run on servers, most industries don't use Windows.


Touche.

WinServer 2008 R2 is pretty cool - and we do write quite a bit of software that runs on our windows boxes to maintain our systems and provide connectivity to client apps. Although, I'm going to guess that isn't what you mean by writing software that runs on servers. :)

I swear I'm not a Microsoft fan boy!
"For any absurd set of thinking, you can probably find a non-zero percentage of the population who is utterly convinced of its truth."

#29 jlouts   Members   -  Reputation: 106

Like
0Likes
Like

Posted 09 September 2011 - 04:09 PM



I became a much better programmer when I moved from Windows to Linux, primarily because I was forced to learn how to write portable code, but the key is that I was exposed to both.


And here's the proof that knowing Java alone will make you superior programmer.


That made no sense.

java code is inherently cross-platform unless you utilize native code.

#30 Dragonsoulj   Crossbones+   -  Reputation: 2126

Like
0Likes
Like

Posted 09 September 2011 - 04:50 PM

Just do this: Install Windows (or buy a computer with it). Then boot up a linux CD and install linux next to Windows so you can boot into Windows for gaming (linux lacks much in this department) or whatever floats your boat, and if you want to program in either, you can. Just always have Windows on the machine first if you are going to install them side by side to dual boot.

#31 alnite   Crossbones+   -  Reputation: 2132

Like
0Likes
Like

Posted 09 September 2011 - 07:12 PM

Only a fool thinks that an OS can make him a better programmer.

#32 e‍dd   Members   -  Reputation: 2105

Like
0Likes
Like

Posted 09 September 2011 - 07:21 PM

Linux will throw you in at the deep end. You'll know more sooner out of necessity. The down-side of that though is that the initial climb will be steeper and perhaps frustrating at times, depending on your temperament :)

If you want get started faster and aren't the kind of person that needs to know what's going on under the hood, Windows (with Visual Studio) is likely more appropriate.

#33 Álvaro   Crossbones+   -  Reputation: 13912

Like
0Likes
Like

Posted 09 September 2011 - 08:08 PM

java code is inherently cross-platform unless you utilize native code.


This whole thing is off topic, but I'll bite.

Java runs on a single plaform: The JVM. There are emulators for the JVM for many platforms, but the way I see it that's not being multi-platform.




#34 Hodgman   Moderators   -  Reputation: 31843

Like
0Likes
Like

Posted 09 September 2011 - 11:44 PM

So... games programming, eh?

#35 Gamer Gamester   Members   -  Reputation: 136

Like
0Likes
Like

Posted 10 September 2011 - 12:06 AM

I have friends who think you're not a good programmer if you don't program in (Linux) Vim or whatever it's called (it's basically a Notepad-ish style code editor). Those friends also happen to not have finished any useful projects and I think many of the zealots fall into this category.


Careful what you say about Vim. It's about as different from Notepad as possible for a text editor to be. In terms of text editing speed, I don't think a tool exists that allows an experienced user to edit faster than Vim. As for you friends not finishing any useful projects... well... finishing a programming project has many (possibly more important) requirements beyond being able to edit text efficiently.


Regarding the original thread topic: Anything that enhances your beard will increase your "realness" as a man, and therefore, as a programmer.

#36 kunos   Crossbones+   -  Reputation: 2207

Like
0Likes
Like

Posted 10 September 2011 - 12:42 AM

It's easier. But having it easier means that in an environment without one, you're lost.


for 5 minutes.. how long does it take to learn you have to type "blablabla" instead of hitting a button? Do you really think a programmer that masters things such as game programming will be scared to learn a couple of commands to type?

And if you judge from what people write it seems to be more complicated for linux users to learn to press a couple of buttons to do a "hello world" in Visual Studio... use the search button and you will see more than one of these genius at it.
Stefano Casillo
Lead Programmer
TWITTER: @KunosStefano
AssettoCorsa - netKar PRO - Kunos Simulazioni

#37 ApochPiQ   Moderators   -  Reputation: 16401

Like
0Likes
Like

Posted 10 September 2011 - 12:46 AM

This has gotten to the point of silliness.

I'll give it one chance to return to some semblance of sanity, or out comes the padlock.

#38 jlouts   Members   -  Reputation: 106

Like
0Likes
Like

Posted 10 September 2011 - 06:48 AM


java code is inherently cross-platform unless you utilize native code.


This whole thing is off topic, but I'll bite.

Java runs on a single plaform: The JVM. There are emulators for the JVM for many platforms, but the way I see it that's not being multi-platform.



JVM uses a JIT to compile java intermediate code to native code of whatever platform it is on. Seems cross platform enough for me, unless you really want java to throw out the compile once run anywhere philosophy, in which case there are various compilers to compile java code to native code.

As for the topic of which OS is best for programming? It really shouldn't matter in this day in age, I bet there are full featured IDEs for linux just as there are for windows and if you wanted to you can use command line for either platform. All that matters is that you're able to get the job done which virtually all operating systems allow you to do easily anymore.

#39 Slavik81   Members   -  Reputation: 360

Like
0Likes
Like

Posted 10 September 2011 - 12:29 PM

Whenever I talk to Linux users, they tell me something about freedom and free beer. That might have something to do with what OS they choose.

#40 SimonForsman   Crossbones+   -  Reputation: 6306

Like
0Likes
Like

Posted 10 September 2011 - 01:48 PM


I have friends who think you're not a good programmer if you don't program in (Linux) Vim or whatever it's called (it's basically a Notepad-ish style code editor). Those friends also happen to not have finished any useful projects and I think many of the zealots fall into this category.


Careful what you say about Vim. It's about as different from Notepad as possible for a text editor to be. In terms of text editing speed, I don't think a tool exists that allows an experienced user to edit faster than Vim. As for you friends not finishing any useful projects... well... finishing a programming project has many (possibly more important) requirements beyond being able to edit text efficiently.


Regarding the original thread topic: Anything that enhances your beard will increase your "realness" as a man, and therefore, as a programmer.


FakeVim for QTCreator(included for free) or ViEmu for VisualStudio($99+ plugin) and you'll get the nice commandbased editing without having to give up your nice IDE. (Commandbased editing is insanely fast when you get used to it)

vim itself can be integrated with pretty much any build system, source control, debuggers, etc aswell though so with the appropriate scripts/plugins it can be a very powerful IDE on its own. (Personally i'm using QTCreator on both Windows and Linux these days since it makes it really simple to write cross platform graphical applications in C++ while i pretty much only use vim to edit scripts remotely (primarily php scripts)).

And ofcourse, vim is available for Windows aswell for those who want that.

The only real advantage Linux has for developers is valgrind, its probably the most powerful free tool of its kind and unfortunatly it hasn't been ported to Windows yet. (There are commercial software for Windows that can do some of the things valgrind does though but those tend to be very expensive and there are free tools that can replace some of the more commonly used valgrind features (I havn't found any that can quite match valgrind though))
I don't suffer from insanity, I'm enjoying every minute of it.
The voices in my head may not be real, but they have some good ideas!




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS