Computer Science Canada

My rant on "cross platform"

Author:  mirhagk [ Sun Nov 28, 2010 10:58 pm ]
Post subject:  My rant on "cross platform"

I hear stuff like "I don't want to use the WIn API, or Direct X, or C# because it's windows - specific, I'd rather use a cross platform option". Here's the problem, some "cross platform" libraries are indeed cross platform, but most just mean "cross-linux". For instance using pthread rather than windows' built in threading. PThread technically works on windows, but it's a very pooly documented, not ever worked on port, rather than actually including it with the code. Rather than using something that works on linux, and then building a windows port, why don't we do the opposite. 99% of people have windows, and almost nooone who doesn't understand programming uses linux. So rather than sticking these people with the task of trying to search through undocumented sites trying to find and install undocumented code (very little of which is compiled, most are source code, which is useless to the average user), why don't we give that task to those tech-savvy enough to run linux?

And then there's the whole quality vs cross platform. Take for instance OpenGL vs DirectX. OpenGL is cross platfom, DirectX is powerful. But really OpenGL still doesn't reach all customers, you still need a computer good enough to run the program, so for a good graphics application, the amount of people your cutting off because they don't have windows is tiny compared to the number of people you're cutting off because their computer isnt good enough, so who cares, go with power.

Plus your really not cutting anyone off. Wine and Bootcamp means that windows applications run on anything. Whereas Mac and Linux applications don't usually run on windows, and are never easy to use.

Plus, if you're tech-savvy enough to use linux, you know how to dual-boot, it's honestly not that hard, and if your computer is good enough to run good programs, its good enough that dual booting won't do anything bad to it. (ie probably has more than enough hard drive space)

Author:  Insectoid [ Sun Nov 28, 2010 11:06 pm ]
Post subject:  RE:My rant on "cross platform"

A lot of people want to develop on cross-platform languages because they are developing on Linux. Installing Windows just to use C# is not in the interest of much of the programming community.

A lot of games that run on DirectX also have the option to run on openGL. While that takes a lot of effort (as far as I know) it allows easy porting to other platforms.

Wine is not reliable for many modern applications- anything running on DX9+ is unlikely to work in my experience, and having a Windows partition just sucks.

You are right though. If you're developing to an audience, it's best to cater to the majority, which in 99% of cases is Windows users.

Author:  DtY [ Mon Nov 29, 2010 12:13 am ]
Post subject:  Re: RE:My rant on "cross platform"

Insectoid @ Sun Nov 28, 2010 11:06 pm wrote:
A lot of people want to develop on cross-platform languages because they are developing on Linux. Installing Windows just to use C# is not in the interest of much of the programming community.
Yes. I am not going to install Windows just because everyone else likes it. I don't.

Author:  TheGuardian001 [ Mon Nov 29, 2010 12:43 am ]
Post subject:  Re: My rant on "cross platform"

mirhagk @ Sun Nov 28, 2010 10:58 pm wrote:

And then there's the whole quality vs cross platform. Take for instance OpenGL vs DirectX. OpenGL is cross platfom, DirectX is powerful. But really OpenGL still doesn't reach all customers, you still need a computer good enough to run the program, so for a good graphics application, the amount of people your cutting off because they don't have windows is tiny compared to the number of people you're cutting off because their computer isnt good enough, so who cares, go with power.

I demand you give me a graphics card made since the early 90s that doesn't support OpenGL. And I demand to know where you got the idea that DirectX was more powerful? Even on Windows, OpenGL is more efficient and more powerful (here's a presentation by NVidea to prove that, if you like.) In fact, the number one thing Microsoft is selling DirectX 11 on (new tesselation technology) has been available for over 3 years.

Another fun fact for you: If you use DirectX 10 or 11, your programs won't work on windows XP. Hows that for cutting of your market? Over half of PC gamers still use XP.

I'm fine for you being pro single-platform, but I won't have you sit there and be stupid and make assumptions. I'm also not fine using a horrible language like C#, but really that's your choice.

Author:  rdrake [ Mon Nov 29, 2010 1:08 am ]
Post subject:  Re: My rant on "cross platform"

mirhagk @ Sun Nov 28, 2010 10:58 pm wrote:
I hear stuff like "I don't want to use the WIn API, or Direct X, or C# because it's windows - specific, I'd rather use a cross platform option". Here's the problem, some "cross platform" libraries are indeed cross platform, but most just mean "cross-linux".
I'm not sure I follow. In your example you cite pthread, but nowhere on their site does it mention Windows.

The actual pthreads site wrote:
For UNIX systems, a standardized C language threads programming interface has been specified by the IEEE POSIX 1003.1c standard. Implementations that adhere to this standard are referred to as POSIX threads, or Pthreads.
Windows does not quality under UNIX. I understand there is a pthreads port to Windows, but nowhere do they claim to officially support Windows.

mirhagk @ Sun Nov 28, 2010 10:58 pm wrote:
99% of people have windows, and almost nooone who doesn't understand programming uses linux.
I'm sorry, but are you saying all Linux users are programmers? I think it would be more fair to say programmers are more likely to use Linux than non-programmers.

mirhagk @ Sun Nov 28, 2010 10:58 pm wrote:
Rather than using something that works on linux, and then building a windows port, why don't we do the opposite.
Like... GIMP? A lot of these programs come from the need for that kind of application on Linux. Why add to the neverending pile of crapware on Windows? If the application is good enough, people will port it over to Windows.

mirhagk @ Sun Nov 28, 2010 10:58 pm wrote:
And then there's the whole quality vs cross platform. Take for instance OpenGL vs DirectX. OpenGL is cross platfom, DirectX is powerful.
OpenGL has its issues, but I wouldn't say it lacks in the power department.

mirhagk @ Sun Nov 28, 2010 10:58 pm wrote:
But really OpenGL still doesn't reach all customers, you still need a computer good enough to run the program, so for a good graphics application, the amount of people your cutting off because they don't have windows is tiny compared to the number of people you're cutting off because their computer isnt good enough, so who cares, go with power.
Dude, my netbook runs OpenGL. My 10 year old XP machine ran OpenGL. What are you talking about? If anything you're cutting users off by using DirectX.

As was also mentioned many games use a standard engine which has both DirectX and OpenGL backends. This means you can switch to whichever backend is available and/or provides the best performance in your situation.

mirhagk @ Sun Nov 28, 2010 10:58 pm wrote:
Plus your really not cutting anyone off. Wine and Bootcamp means that windows applications run on anything. Whereas Mac and Linux applications don't usually run on windows, and are never easy to use.

Plus, if you're tech-savvy enough to use linux, you know how to dual-boot, it's honestly not that hard, and if your computer is good enough to run good programs, its good enough that dual booting won't do anything bad to it. (ie probably has more than enough hard drive space)
Protip: Nobody ever likes dual booting, WINE, or Bootcamp. These are necessary evils if you wish to play the vast majority PC games, or the odd application which lacks any reasonable replacement.

Overall I give you F for fact checking and general knowledge, B+ for trollbait. You average out to a pass.

Author:  DemonWasp [ Mon Nov 29, 2010 3:42 am ]
Post subject:  RE:My rant on "cross platform"

The biggest problem I have with single-platform development is that sometimes I develop on my Windows 7 desktop at home, sometimes I develop on my Ubuntu laptop while travelling, and sometimes I want my programs to run on my friends' Windows XP boxes.

The tools I prefer (Java, OpenGL/OpenAL, JMonkeyEngine) let me do that effortlessly. Were I to use the single-platform equivalents (C#, DirectX), I couldn't develop while sitting in a car or bus for 5 hours in a row. I couldn't rely on my friends having DX11 (most don't).

Dual-booting is a joke. Most of the time, I just don't turn the computer off if I can help it (driver crashes aside...stupid Win7). Even when I do turn the system off, it's never to switch OS. I've tried this a few times and uniformly it's been a waste of time setting everything up twice on the same computer. WINE is hit-and-miss and doesn't perform as well as native Windows -- when it works (in fairness, Windows 7 just plain sucks at playing some games too).

Rest assured though, I will never let myself get suckered into a world where I can't choose my platform. If I program in C#, Microsoft gets to decide that I'm using (and targeting) Windows, that I'm using DirectX, and so forth. If I program in Java (C, C++, Python, whatever else), I get to decide which system I'm targeting, which I'm working on, which graphics library I use, and so on.

You should probably also know that the numbers are shifting in favour of Linux and OSX. Most of the research I've seen is that Linux is <1% market share, Apple is ~5-10% and Windows is the remaining 89-94%, but that gap is decreasing.

Author:  rdrake [ Mon Nov 29, 2010 4:42 am ]
Post subject:  Re: My rant on "cross platform"

I feel obligated to enlighten some people here. C# is a cross-platform (via Mono and DotGNU) and standardized (by the ISO and EMCA) language, .NET is the proprietary Microsoft platform (including all BCL such as WinForms and the like). Common mistake, no need to be embarrassed.

The correct terminology to use when referring to the proprietary Microsoft implementation is the .NET Platform.

Author:  wtd [ Mon Nov 29, 2010 8:22 pm ]
Post subject:  RE:My rant on "cross platform"

Here's the trick to cross-platform development:

separate your app out into UI and underlying logic. IN many cases, the underlying logic can be fairly easily developed in a cross platform manner. You then create native UIs for each platform.

Or... employ the ultimate cross-platform development environment: the internet.

Author:  mirhagk [ Mon Nov 29, 2010 9:55 pm ]
Post subject:  Re: RE:My rant on "cross platform"

wtd @ Mon Nov 29, 2010 8:22 pm wrote:
Here's the trick to cross-platform development:

separate your app out into UI and underlying logic. IN many cases, the underlying logic can be fairly easily developed in a cross platform manner. You then create native UIs for each platform.

Or... employ the ultimate cross-platform development environment: the internet.


thank you, someone who makes sense. However the problem is that most linux programs only work on the backend. Yes there are front ends made by other people, but a CLEAN object oriented back-to-front end system rarely is the case (where it pretty much always should be).

Really the answer to all cross-platform-ness is object oriented design. Instead of hardcoding in something to handle multi-threads or functions, have the main function simply delegate the work to something else, something that can easily be replaced.

Oh and just to clarify, I meant that while OpenGL itself can reach everyone, a game with good graphics does not. Most modern video games can only play on a small percentage of computers. So using DirectX to cut an extra (tops 10%) of people from the already slim 30% (just a guess, probably pretty conservative)

Oh and I have no beef with stuff like Java and OpenGL, they are just as good, I don't like when people say you have to use them, because they are cross-platform.

and @rdrake, my point exactly. People use stuff like that because "it's cross platform" but it's not. Yes a port exists, but it's not meant for that.

C# and the .NET framework may have flaws, but they are clean, and personally I think clean code makes it a lot more available to others, developing extensions and changing code is a lot simpler.



SO here's my ultimate point. Rather than using libraries that have ports for everything, simply make your code clean, and object oriented. Use proper programming practice, and people will have no problem cutting out your needed libraries and subsituting their own.

(you could also compile your code into their own objects, and have the main simply provide the link between them, then make your code closed source, while the main and external interface code open sourced. Very easy to adapt to new systems, and still closed source)

Author:  rdrake [ Tue Nov 30, 2010 1:47 am ]
Post subject:  Re: RE:My rant on "cross platform"

mirhagk @ Mon Nov 29, 2010 9:55 pm wrote:
However the problem is that most linux programs only work on the backend. Yes there are front ends made by other people, but a CLEAN object oriented back-to-front end system rarely is the case (where it pretty much always should be).

Really the answer to all cross-platform-ness is object oriented design. Instead of hardcoding in something to handle multi-threads or functions, have the main function simply delegate the work to something else, something that can easily be replaced.
What do you mean by "on the backend?" Are you referring to command line programs? If so, you are wrong. CLI programs do have an interface, it's called the command line.

In addition, the real solution is this, not OOP.

mirhagk @ Mon Nov 29, 2010 9:55 pm wrote:
Oh and just to clarify, I meant that while OpenGL itself can reach everyone, a game with good graphics does not. Most modern video games can only play on a small percentage of computers. So using DirectX to cut an extra (tops 10%) of people from the already slim 30% (just a guess, probably pretty conservative)
Sounds to me like you're now arguing using DirectX will cut off from your already slim market. Either way this further clarification does nothing to improve your argument, it just weakens it further.

mirhagk @ Mon Nov 29, 2010 9:55 pm wrote:
Oh and I have no beef with stuff like Java ... they are just as good...
You take that back.

mirhagk @ Mon Nov 29, 2010 9:55 pm wrote:
...I don't like when people say you have to use them, because they are cross-platform.
Fair enough.

mirhagk @ Mon Nov 29, 2010 9:55 pm wrote:
and @rdrake, my point exactly. People use stuff like that because "it's cross platform" but it's not. Yes a port exists, but it's not meant for that.
I'm really not sure anybody on Linux really cares if their stuff works on Windows or not. Also, my point was nowhere does your particular example even claim to be cross-platform aside from different flavours of *nix.

mirhagk @ Mon Nov 29, 2010 9:55 pm wrote:
... and people will have no problem cutting out your needed libraries and subsituting their own.
Somebody else explain why this won't realistically work.

mirhagk @ Mon Nov 29, 2010 9:55 pm wrote:
(you could also compile your code into their own objects, and have the main simply provide the link between them, then make your code closed source, while the main and external interface code open sourced. Very easy to adapt to new systems, and still closed source)
You mean like a dynamic library? The interface doesn't even need to be open sourced, just documented. Be careful, though, as linking to GPL code is usually not a good idea for closed-source programs (unless it's the LGPL).

While I agree nobody should choose something simply because it's cross-platform (unless that's a primary goal), I disagree strongly with your weakly argued points and incorrect assumptions.

Author:  wtd [ Tue Nov 30, 2010 2:29 am ]
Post subject:  Re: RE:My rant on "cross platform"

mirhagk @ Tue Nov 30, 2010 10:55 am wrote:
Really the answer to all cross-platform-ness is object oriented design.


Very close to right.

Very close.

So close you're almost there.

But... completely and utterly wrong.

What you're describing is modular design. Object-oriented programming is one way to kind of sort of accomplish this, but is not the be-all or end-all of modular design.

Author:  DtY [ Tue Nov 30, 2010 8:20 pm ]
Post subject:  Re: RE:My rant on "cross platform"

wtd @ Mon Nov 29, 2010 8:22 pm wrote:
Or... employ the ultimate cross-platform development environment: the internet.
That's why I love web development. You aren't attached to your web browser like you are an operating system. Sure, it sucks if you have to switch browsers to go to some site (assuming that the needed browser is available for your setup), but you can easily run two browsers at the same time. And in very few cases will a javascript program not just work between browsers anymore (barring IE and interfaces that aren't standardized yet).

Author:  Insectoid [ Tue Nov 30, 2010 11:41 pm ]
Post subject:  Re: My rant on "cross platform"

[quote="rdrake" @ several posts above]
mirhagk @ Sun Nov 28, 2010 10:58 pm wrote:
99% of people have windows, and almost nooone who doesn't understand programming uses linux.
I'm sorry, but are you saying all Linux users are programmers? I think it would be more fair to say programmers are more likely to use Linux than non-programmers.[/quote]

I wouldn't say he's saying ALL Linux users are programmers- rather, the vast majority of Linux users are familiar with programming, much more so than the average Windows user.

Author:  DIIST [ Wed Dec 01, 2010 12:33 pm ]
Post subject:  Re: My rant on "cross platform"

Generally a good design and abstraction can withstand the issues of cross platform compatibility. Keep your core logic away from your model and presentation. Theres nothing wrong with using Direct X, or Win API. There are also a slew of cross platform tools that you could use like QT to make your life easier.

Author:  mirhagk [ Wed Dec 01, 2010 12:56 pm ]
Post subject:  Re: RE:My rant on "cross platform"

rdrake @ Tue Nov 30, 2010 1:47 am wrote:
mirhagk @ Mon Nov 29, 2010 9:55 pm wrote:
However the problem is that most linux programs only work on the backend. Yes there are front ends made by other people, but a CLEAN object oriented back-to-front end system rarely is the case (where it pretty much always should be).

Really the answer to all cross-platform-ness is object oriented design. Instead of hardcoding in something to handle multi-threads or functions, have the main function simply delegate the work to something else, something that can easily be replaced.
What do you mean by "on the backend?" Are you referring to command line programs? If so, you are wrong. CLI programs do have an interface, it's called the command line.


In a way I am. Command line programs are okay if they have a
code:

option1
option2
option3
choose an option

interface rather than just runniing the program with command line parameters. Yes they do work, but it's far too confusing, and it's not much harder to implement a menu-like system like above. You shouldn't need to read documentation to use a program, it should explain itself, that's just my personal belief, and command line parameter programs need documentation (sometimes built in with -h, but that's usually even worse than an external .txt describing how to use it).

I'm not saying you need GUI (although GUI makes most programs easier to use), but you need UI, not just command line parameters.

Author:  rdrake [ Wed Dec 01, 2010 1:08 pm ]
Post subject:  RE:My rant on "cross platform"

You're clearly missing the *nix way. The idea is to have simple programs with a single purpose. Users can then use any combination of these programs as they wish to produce the desired result. By forcing the use of menus or a GUI you take away from that powerful scriptability.

As for "not much harder to implement," take a look at the ncurses documentation. Tell me again after reading that it's not much harder to implement.

Programs also usually come with manpages. These provide documentation. The output of -h typically does not provide as detailed information as the corresponding manpage.

The *nix way has worked for people since long before Windows ever existed. Stop wanting to change a good thing.

Author:  mirhagk [ Wed Dec 01, 2010 1:25 pm ]
Post subject:  RE:My rant on "cross platform"

http://xkcd.com/619/

Author:  wtd [ Wed Dec 01, 2010 7:10 pm ]
Post subject:  Re: RE:My rant on "cross platform"

rdrake @ Thu Dec 02, 2010 2:08 am wrote:
You're clearly missing the *nix way. The idea is to have simple programs with a single purpose. Users can then use any combination of these programs as they wish to produce the desired result. By forcing the use of menus or a GUI you take away from that powerful scriptability.

As for "not much harder to implement," take a look at the ncurses documentation. Tell me again after reading that it's not much harder to implement.

Programs also usually come with manpages. These provide documentation. The output of -h typically does not provide as detailed information as the corresponding manpage.

The *nix way has worked for people since long before Windows ever existed. Stop wanting to change a good thing.


Case study in the exact opposite of this: iTunes.

Author:  mirhagk [ Wed Dec 01, 2010 10:34 pm ]
Post subject:  Re: RE:My rant on "cross platform"

rdrake @ Wed Dec 01, 2010 1:08 pm wrote:
You're clearly missing the *nix way. The idea is to have simple programs with a single purpose. Users can then use any combination of these programs as they wish to produce the desired result. By forcing the use of menus or a GUI you take away from that powerful scriptability.

As for "not much harder to implement," take a look at the ncurses documentation. Tell me again after reading that it's not much harder to implement.

Programs also usually come with manpages. These provide documentation. The output of -h typically does not provide as detailed information as the corresponding manpage.

The *nix way has worked for people since long before Windows ever existed. Stop wanting to change a good thing.


wait... so your argument is basically, "well it worked 20 years ago, so why not still use it?" This is the 21st century. 2010. With .net and visual studio you can make a program in 1 hour that would've taken weeks to implement. GUI especially has been made easy, so why not use it?

I didn't read the whole article you provided, but i looked briefly through it. The fact that updating the console window is seperate from writing to the buffer just kinda shows how old it is. If your computer needs this, well then you fail. The amount that you write to a screen in a program won't affect the actual speed of any part of it.

So what was your point? Why did you tell me "well back in 1990, we had to do things the old fashioned way, there was no GUI, and you had to refresh the console after writing to a buffer. We also had to walk to school through ten feet of snow, uphill both ways"

Maybe I completely missed your point. I was saying that this is 2010, adding a simple menu system (even console based) takes almost no time at all as long as your using even remotely modern tools.

And I know that programs come with manpages, if you read my post you'd see what I said is they shouldn't have to. You should download a program, have it install itself, then run it, and it should just work. (simple programs of course can skip the install part). Yes we can use manpages and -h, but the majority of computer users would never be able to use your program then.

So what I'm saying is rather than spending time making sure everybody can run your program, spend a little time so everyone can use it.

Author:  rdrake [ Wed Dec 01, 2010 11:27 pm ]
Post subject:  Re: RE:My rant on "cross platform"

mirhagk @ Wed Dec 01, 2010 10:34 pm wrote:
wait... so your argument is basically, "well it worked 20 years ago, so why not still use it?" This is the 21st century. 2010. With .net and visual studio you can make a program in 1 hour that would've taken weeks to implement. GUI especially has been made easy, so why not use it?
Woah, no way. I had no idea it was 2010.

mirhagk @ Wed Dec 01, 2010 10:34 pm wrote:
I didn't read the whole article you provided, but i looked briefly through it. The fact that updating the console window is seperate from writing to the buffer just kinda shows how old it is. If your computer needs this, well then you fail. The amount that you write to a screen in a program won't affect the actual speed of any part of it.
Have you ever heard of SSH? You know, connecting to remote servers without a GUI installed? No? Clearly.

Don't even give me more of your "blah blah blah that's so old school" shit, most of the Internet runs on systems like the ones I'm describing. Contrary to your beliefs, these systems have been running the Internet since its inception. Actually, on second thought, if these systems didn't exist I wouldn't have to read your misguided and moronic statements.

mirhagk @ Wed Dec 01, 2010 10:34 pm wrote:
So what was your point? Why did you tell me "well back in 1990, we had to do things the old fashioned way, there was no GUI, and you had to refresh the console after writing to a buffer. We also had to walk to school through ten feet of snow, uphill both ways"
What are you talking about?

mirhagk @ Wed Dec 01, 2010 10:34 pm wrote:
Maybe I completely missed your point. I was saying that this is 2010, adding a simple menu system (even console based) takes almost no time at all as long as your using even remotely modern tools.
You clearly lack the level of intelligence to process my point. I'm saying there is no need to put a GUI on everything just because you can.

mirhagk @ Wed Dec 01, 2010 10:34 pm wrote:
And I know that programs come with manpages, if you read my post you'd see what I said is they shouldn't have to. You should download a program, have it install itself, then run it, and it should just work. (simple programs of course can skip the install part). Yes we can use manpages and -h, but the majority of computer users would never be able to use your program then.
I don't want idiots like you using my programs. You lack the intelligence to do so.

mirhagk @ Wed Dec 01, 2010 10:34 pm wrote:
So what I'm saying is rather than spending time making sure everybody can run your program, spend a little time so everyone can use it.
Most of the programs I use would not be of any use to your typical moron.

You may be surprised to learn I'm even using GUI applications right now. Except these were built to have a graphical user interface and not be scriptable programs like the ones you are foolishly proclaiming should be replaced. I can automate tasks using these programs with infinite flexibility as there is no artificial obstacle standing in my way. With a GUI I would not have nearly this much freedom.

Just give up. Your arguments are weak and you're using strawman tactics.

Author:  rdrake [ Wed Dec 01, 2010 11:29 pm ]
Post subject:  Re: RE:My rant on "cross platform"

wtd @ Wed Dec 01, 2010 7:10 pm wrote:
Case study in the exact opposite of this: iTunes.
iTunes was a simple program. Apple then turned it into an ungodly monstrosity that nobody in their right mind enjoys using.

I cannot express how happy I was when I found out I could use a different program to load my iPod up with music.

Author:  rdrake [ Wed Dec 01, 2010 11:30 pm ]
Post subject:  Re: RE:My rant on "cross platform"

mirhagk @ Wed Dec 01, 2010 1:25 pm wrote:
http://xkcd.com/619/
The best part about this is Flash is controlled by Adobe and has nothing to do with Linux.

Author:  Insectoid [ Thu Dec 02, 2010 12:23 am ]
Post subject:  Re: RE:My rant on "cross platform"

rdrake @ Wed Dec 01, 2010 11:29 pm wrote:
wtd @ Wed Dec 01, 2010 7:10 pm wrote:
Case study in the exact opposite of this: iTunes.
iTunes was a simple program. Apple then turned it into an ungodly monstrosity that nobody in their right mind enjoys using.

I cannot express how happy I was when I found out I could use a different program to load my iPod up with music.


A bit OT, but can you point me in the direction of aforementioned program?

Author:  mirhagk [ Thu Dec 02, 2010 11:30 am ]
Post subject:  RE:My rant on "cross platform"

rdrake, there's an edit button, use it. Welcome to the internet, please don't double post.

And I never said you need a GUI, I said that if your caring about people using your program enough to only use cross platform libraries, you can also make your program easy to use.

And just because something works doesnt mean you shouldn't upgrade it. That's my point. Boats were perfectly fine for getting across the ocean, if it weren't for them none of all of this would exist.

Now does that mean we shouldn't use airplanes?
Your basically arguing that we should be only using boats, because they have always worked, however I am saying that airplanes can work better, so why not use them?

Name one good argument why we shouldn't use GUI. With modern equipment it's easy to develop it.

Yes, we don't need GUI, but why not?

Yes, we don't need planes, but why not?

Author:  Insectoid [ Thu Dec 02, 2010 11:51 am ]
Post subject:  RE:My rant on "cross platform"

Many programs benefit from not having a GUI because that imposes restrictions on the utility of the program.

Planes don't restrict anything. They allow far larger amounts of people to move around far faster. In more cases than not, GUIs slow down the use of a program.

Typing a set of chained commands that will execute sequentially is far, far faster than navigating a menu to perform a function, waiting for that function to execute, and then navigating a menu to perform another function, and repeating as needed.

Author:  DemonWasp [ Thu Dec 02, 2010 11:54 am ]
Post subject:  RE:My rant on "cross platform"

Because:
- planes are very expensive
- planes use a lot of expensive fuel
- planes need airports
- planes don't carry very much cargo
- planes require constant maintenance
- planes require very skilled pilots, ground crew, engineers to keep flying

In contrast:
- ships are expensive, but you get a lot more ship per dollar
- ships use a lot of fuel, but mostly coal and diesel
- ships need ports (but those are less expensive per amount of cargo than are airports)
- ships carry a ridiculous amount of cargo each
- ships require maintenance, but it's less complicated
- ships require a skilled crew, but don't rely very much on harbour personnel

Your analogy is strangely apt. There are places where planes, like GUIs, are very useful, such as sending international mail or delivering webpages (there are CL browsers but they're not nearly as nice).

However, most heavy lifting can be done equally well, if not better, by command-line applications. For example, want to back up your disk? Sure, you can hunt around and install a backup solution. Or...you can use crontab and cp or dd.

How about finding all calls to malloc() in your application's code? Well, your IDE might provide a solution, or you can grep -R malloc *.cpp and it will list them for you.


You're also wrong about GUIs being easy to develop. They're not difficult, necessarily, but getting a good working UI isn't easy, isn't simple, and isn't nearly as straightforward as you think. Common issues you run into making a GUI:
- different languages
- different cultures write dates, show clocks differently
- right to left or left to right?
- is it Cancel | OK or OK | Cancel?
- does your application feel like an OSX app, Windows app, Gnome app, or KDE app?
- do you use icons, or labels? both?

Author:  jcollins1991 [ Thu Dec 02, 2010 11:55 am ]
Post subject:  Re: RE:My rant on "cross platform"

mirhagk @ Thu Dec 02, 2010 11:30 am wrote:
Name one good argument why we shouldn't use GUI. With modern equipment it's easy to develop it.

Yes, we don't need GUI, but why not?


rdrake @ Wed Dec 01, 2010 1:08 pm wrote:
You're clearly missing the *nix way. The idea is to have simple programs with a single purpose. Users can then use any combination of these programs as they wish to produce the desired result. By forcing the use of menus or a GUI you take away from that powerful scriptability.


Are you even bothering to read his posts and understand them? Have you ever done any *nix programming? By using the command line you're able to chain commands together. GUI's are awesome, but there are many cases where it's a lot more efficient to just have a pure command line interface. Comparing 2 samples of code from CS241 at UW:

code:
java cs241.WLScan < foo.wl > foo.scanned
java cs241.WLParse < foo.scanned > foo.wli
./wlgen < foo.wli > foo.asm   
java cs241.binasm < foo.asm > foo.mips
java mips.twoints foo.mips


code:
cat foo.wl | java cs241.WLScan | java cs241.WLParse | wlgen | java cs241.binasm > foo.mips
java mips.twoints foo.mips


Of course you could use the first one, which is what you'd have to do if everything was implemented with a GUI. But why not use the second one, which is a perfect example of the awesome power of the command line, which would completely be killed if you implemented a disgusting "options" interface like you suggested on the first page.

edit: Love how this has gone from a "cross platform" rant to what is essentially a Windows vs *nix fight
edit: Ignore the next part if you want, demonwasp already made the same point

And to your analogy: sure we could use planes because they're fast, but if you're trying to ship a couple hundred thousand pounds of stuff across the ocean you wouldn't use planes, you'd use a cargo ship. You use each technology where it works best, and when it comes to coding it's usually better to use code that'll work on a variety of systems, and if someone wants to make it look prettier then they can do that work themselves.

Author:  mirhagk [ Thu Dec 02, 2010 12:29 pm ]
Post subject:  Re: RE:My rant on "cross platform"

jcollins1991 @ Thu Dec 02, 2010 11:55 am wrote:

And to your analogy: sure we could use planes because they're fast, but if you're trying to ship a couple hundred thousand pounds of stuff across the ocean you wouldn't use planes, you'd use a cargo ship. You use each technology where it works best, and when it comes to coding it's usually better to use code that'll work on a variety of systems, and if someone wants to make it look prettier then they can do that work themselves.


Actually this is what I'm saying. I never said use only GUI, I just said why not? Yes for command line programs for experienced users who are doing super complex things are a good thing. But I see simple things taken in this direction, and it makes me sad.

For instance, you could have a program analyze the amount of space on your drive, and tell you how much of it is taken up by music or videos or text files and word documents, or installed programs, or not.

Yes this would be faster as a command line program, and it'd give you good data, and could probably fill a couple console windows with the data.

Or you could use this as a GUI program. The core part of the program would run at pretty much the same speed, since you don't need the GUI to do anything (other than maybe update a status bar every so often). Then you get the data back, this time you can have a pie chart showing how much of each (or a bar for ease of programming). Then at the side have detailed information, and it could be organized in a hierarchy structure. Yes it'd take a little longer to view detailed information, but then you don't have to sift through the stuff you don't want.

for small scale single purpose programs, use command line, cuz you'll probably need more than one. But for large ones like defragmenting, who cares about the extra 2 seconds to click a few buttons (which is faster than remembering and typing in command line parameters anyway).

Actually the analogy goes farther than I originally thought. If your just dealing with cargo, and no non-workers will be involved in the process, use a boat (if your just working with data, and the program isn't meant for non-computer savvy then use this). If you want to carry passengers, and don't care spending the extra dollar to accomadate them well, use a plane (if your developing for users, rather than peers and tech-savvy people, and don't mind that little bit of speed lost, use GUI)

Author:  jcollins1991 [ Thu Dec 02, 2010 12:40 pm ]
Post subject:  Re: RE:My rant on "cross platform"

mirhagk @ Thu Dec 02, 2010 12:29 pm wrote:
Actually this is what I'm saying. I never said use only GUI, I just said why not? Yes for command line programs for experienced users who are doing super complex things are a good thing. But I see simple things taken in this direction, and it makes me sad.


Try re-reading this thread before posting any more arguments. There isn't a single argument against GUI's, they're all against your proposed way of changing powerful command line interfaces into multiple choice text programs. GUI's are amazing, I can't imagine using the internet or many of my day to day tasks without them, but many of the "cross platform" libraries and tools are much more useful when you have simple command line interfaces, and making GUI's can be left to the end once the infinitely more important logic side of coding is finished.

Author:  Insectoid [ Thu Dec 02, 2010 12:40 pm ]
Post subject:  RE:My rant on "cross platform"

So, wait, what exactly is your argument then? Originally it sounded like you wanted GUIs on everything, and now you only want it where it's needed/useful?

Anyway, a GUI is always better for the non-savvy, and nobody in their right minds will deny it. The savvy people want more control though, and a terminal TUI will allow that.

It is a lot of work to create a GUI, from design to implementation. I don't care how good your IDE is, it is still a lot of effort to create a decent GUI. There are thousands of console apps, and adding a GUI to each is simply too much work.

Plus, how the hell would us computer-types look badass in front of our friends if not with terminal computing?

This thread has strayed a bit from its original topic, I must say.

Author:  TerranceN [ Thu Dec 02, 2010 3:44 pm ]
Post subject:  Re: RE:My rant on "cross platform"

Insectoid @ Thu Dec 02, 2010 12:23 am wrote:
A bit OT, but can you point me in the direction of aforementioned program?


A quick google search led me to:
Windows: http://www.copytrans.net/copytransmanager.php
Linux: https://help.ubuntu.com/community/PortableDevices/iPhone

Author:  DemonWasp [ Thu Dec 02, 2010 5:15 pm ]
Post subject:  RE:My rant on "cross platform"

It's important to note that the major strength of CLI programs comes not from their interface, necessarily, but from their environment. What I mean is that the real strong point of a CLI is that it lets you "mash up" or combine different programs to achieve a complex effect, something you really can't do with GUI programs.

For an example of a combination, see jcollins' post about cs241, above.

As an example, let's use the disk-analysis program you suggested, mirhagk. In GUI format, you could write software to:
- do the analysis
- show the analysis
- draw pie charts
- respond to user interaction

and you'd have an alright program.

In the CLI environment, you would write
- a program to do the analysis and output it
- a program to draw pie charts

The user can then do disk-analyze | draw-chart -type=pie. They can also use draw-chart to chart other types of data as they wish. They can read the raw output of your program, or even write their own program to handle that data (maybe they want to do some analysis of that data, determine which things should be automagically compressed to save disk space, whatever.

In the GUI world, other users can't easily augment your program.

Author:  mirhagk [ Thu Dec 02, 2010 11:33 pm ]
Post subject:  RE:My rant on "cross platform"

@demonwasp

but why? If you could choose between using one program, or a chain of programs, which would you use? Most likely the one program, as it takes less time for you to get what you want, you only have to click a couple buttons instead of running seperate programs.

But all of this only loosely relates to my original post of why?

Why is it important to use cross-platform libraries. Why is it important to make small programs useful for one purpose, and chain them together. The answer is, it's usually not, which is my point.

Yes these do become useful in certain situations, but certainly not for everything. That was my point.

Author:  Dan [ Thu Dec 02, 2010 11:48 pm ]
Post subject:  Re: RE:My rant on "cross platform"

mirhagk @ 2nd December 2010, 11:33 pm wrote:

why?



It's relatively easy to make a GUI for a command line program but a nightmare to make a script to run or automate the running of a GUI program with the options you want.

A greate example of this issue is the Turing IDE. Rather then making a command line complier and then making an IDE for it, holt soft took your approach and made a Windows only GUI program. The result of this is that it is now next to imposible to make an IDE for modern versions of turing or to make a program or script that can complie a turing program for you.

Author:  DemonWasp [ Fri Dec 03, 2010 3:15 am ]
Post subject:  RE:My rant on "cross platform"

Which would I prefer to use? The chain of programs. Seriously. But, hear me out:

I use Java, generally working in Eclipse. While Eclipse encapsulates a lot of functionality and is a GUI program, it works together with a separate executable (java) to run my programs.

I also frequently just do things on the CLI when I have one (ie whenever I'm on Linux). Even when I could use a GUI. This is especially true when coding in C(++) and when managing files. There is no equivalent to find, cp, mv, dd, vim, grep, awk, sed, make, diff, and chmod/chown.

You're also wrong that a GUI is necessarily faster for any given task. While it's sometimes faster or better (I generally wouldn't write an essay outside of OOo, for example), there are a lot of examples of situations where it's much, much faster to use a CLI. Say I want to copy all the files from a given directory tree to a new location, but exclude all the image files (jpg, png, bmp, etc). How would you do that in a GUI that isn't specially designed for the task? You can do that in bash with find, xargs, grep and cp relatively easily (I haven't listed how because I'm on Windows).

There's also the issue of saving state in my work environment. If I want a GUI program to do something twice, I have to start it up, run the action, reset it, run the action again. From the CLI, I just hit (up arrow)(enter) and it's done again. Or, if I want a slight variation, I can modify my invocations.


One huge part of the UNIX way that's not been mentioned at this point is the idea of "do one thing, right". Meaning, have your program solve one part of the problem in the most correct way possible. Keep a simple, clean interface (text!) and adhere to a published set of rules (the man pages). This makes maintenance easy, and it makes arbitrary complicated functionality relatively simple. Nobody can design for every use case, so why not give a full range of tools?

An analogy is that UNIX / CLI is a toolbox with screwdriver, hammer, files, wrenches, pliers, mallets, string, torches, saws and so forth. Meanwhile, Windows / GUI is a doghouse that's already built for you. The Windows way sure looks easier, right? For starters, you don't have to be a carpenter, you don't need to invest any time, and it's already done for you, right? Great...but what if your dog is too big? What if you wanted to store horses instead? What if you actually wanted to build a house, dammit?

Good luck. Guess you'd better buy House 7 now, hadn't you?

Author:  mirhagk [ Fri Dec 03, 2010 8:31 am ]
Post subject:  Re: RE:My rant on "cross platform"

DemonWasp @ Fri Dec 03, 2010 3:15 am wrote:

An analogy is that UNIX / CLI is a toolbox with screwdriver, hammer, files, wrenches, pliers, mallets, string, torches, saws and so forth. Meanwhile, Windows / GUI is a doghouse that's already built for you. The Windows way sure looks easier, right? For starters, you don't have to be a carpenter, you don't need to invest any time, and it's already done for you, right? Great...but what if your dog is too big? What if you wanted to store horses instead? What if you actually wanted to build a house, dammit?

Good luck. Guess you'd better buy House 7 now, hadn't you?


That's a great analogy, and I agree. But sometimes I'd rather just shop around and find a good doghouse. There are millions of different doghouse variations out there, just like programs, and one of them is almost guaranteed to do what I want.

I just think that CLI type things is great for people who do very complex tasks often, for instance you could reuse that screwdriver and hammer with other projects, like putting up a treehouse. But it's not the only way to do things. It's not like you have to build all doghouses yourself, you can buy some of them already made.

I would never say that CLI is useless and unneccassary, it's just not the only way to do things. And whenever your developing programs that are going to be used by normal people, you can't exactly use CLI (well you could, poeple will probably complain alot though). I've always learned there are three steps to making an awesome program. First come up with a great idea. Second, code this great idea into an amazing algorithm. Third, make the program dumb enough so that people can't screw it up. Yes when making programs for the programming community you don't have to follow the last step, but when your making them for the general public, or wanna sell them, you need to do the last step.

Author:  [Gandalf] [ Fri Dec 03, 2010 10:57 am ]
Post subject:  Re: RE:My rant on "cross platform"

mirhagk @ 2010-12-03, 8:31 am wrote:

I would never say that CLI is useless and unneccassary, it's just not the only way to do things. And whenever your developing programs that are going to be used by normal people, you can't exactly use CLI (well you could, poeple will probably complain alot though). I've always learned there are three steps to making an awesome program. First come up with a great idea. Second, code this great idea into an amazing algorithm. Third, make the program dumb enough so that people can't screw it up. Yes when making programs for the programming community you don't have to follow the last step, but when your making them for the general public, or wanna sell them, you need to do the last step.

Using a command line for development and forcing the user to use it are two completely different things. That's why, when you have to make a user interface, you abstract away the great idea and the amazing algorithm, and then you're free to do whatever you want with the last step. This means that you can use CLI to develop anything from a command line tool to a GUI front end. The great thing about this is the flexibility that DemonWasp analogized, you can still use (for example) a GUI builder for your project as one of the tools in your CLI development environment.

Author:  DemonWasp [ Fri Dec 03, 2010 4:23 pm ]
Post subject:  RE:My rant on "cross platform"

This pattern is commonly called a "frontend". A lot of programs, particularly in the Linux world, have two components, a front-end and a back-end. Take, for example, samba, the SMB daemon that allows Linux systems to share files transparently with Windows systems.

The first part of the system is a CLI utility that prefers to run in daemon (non-interactive) mode. It reads settings from a file, then runs in the background. It has almost no UI of any kind (CLI or GUI). It takes all of its settings from /etc/config/samba or some similarly-named file. By editing that file, you can change how samba behaves (add more shares, set permissions, etc).

However, editing that file is tricky and time-consuming, so there's system-config-samba, a Python GUI that lets you change the settings. It will also automatically update the file and restart samba so you can see your settings changed.

This makes both philosophies happy. The user doesn't have to learn the complicated syntax samba likes, but the programmers get to separate concerns, keeping the programs small, maintainable, reliable. Even better, if someone doesn't like system-config-samba, they can write their own version to seamlessly replace it.

Author:  mirhagk [ Sat Dec 04, 2010 10:19 am ]
Post subject:  RE:My rant on "cross platform"

Yes the front end and back end model is a great one. But sometimes the developer needs to actually make the front end themselves, rather than someone else making it. Take for instance the samba (not sure if they made the front end themselves, or if someone else did, but i'm guessing someone else did), now it sounds like they didn't really develop the program with a front end in mind, someone just made a front end to use it. The fact that it must restart samba in order for the settings to apply makes it sound like it definetly wasn't developed with a front end in mind, all I'm saying is they should be. (even if they don't include a front end, make it easier for someone else to make it)

Author:  rdrake [ Sat Dec 04, 2010 12:43 pm ]
Post subject:  Re: RE:My rant on "cross platform"

mirhagk @ Sat Dec 04, 2010 10:19 am wrote:
The fact that it must restart samba in order for the settings to apply makes it sound like it definetly wasn't developed with a front end in mind, all I'm saying is they should be. (even if they don't include a front end, make it easier for someone else to make it)
Samba (as well as a lot of Linux daemons) relies on external configuration files to run. If these files are edited, the daemons must be restarted in order to take effect.

This is even common in the Windows world with Windows Services requiring restarts to have changes take effect. Last time I tweaked some display manager settings in Windows, I had to restart that service.

I wouldn't say Samba was developed without a frontend in mind. More it was developed with the belief changes happen rarely, which is quite true. Why bother reading configuration files every connection when they're unlikely to change? Might as well do it when the daemon starts and keep those changes until restarted.

Author:  Dan [ Sat Dec 04, 2010 4:28 pm ]
Post subject:  RE:My rant on "cross platform"

The samba daemon can be realoaded with out restarting it which will cause it to reread the config file, just like most linux daemons can.

I blive the command is:

/etc/init.d/samba reload

or

/etc/init.d/samba force-reload


I fail to see what this has to do with cross platform or GUI tho...


Also compraed to windows *nix systems are vastly better at not having to be restarted when changes are made. Normaly the only change that requires a reboot are changes to the kernel.

Spreating the backend from the frontend makes software more free and open. As in the Turing example you only have one choice for the IDE and can never use the Turing complier any other way. Almost all other programming langues have the IDE and complier spreated and the complier is almost allways used via a CLI. Even Visual Basics has a CLI under the Visual Studio IDE.

Author:  wtd [ Sat Dec 04, 2010 5:09 pm ]
Post subject:  Re: RE:My rant on "cross platform"

Dan @ Sun Dec 05, 2010 5:28 am wrote:
Even Visual Basics has a CLI under the Visual Studio IDE.


Same for C#. See csc.exe.

Author:  mirhagk [ Sat Dec 04, 2010 9:22 pm ]
Post subject:  RE:My rant on "cross platform"

yes seperating front from back works for free software, but realistically, not everything can be free. Yes firefox, apache and many many other things work great free, but computer science in general would not be as advanced as it is right now without people making money off of it. A lot of companies pay big research money, and that research benefits everyone. But when they make a product, they sometimes need failsafes to make sure they get their money for the work they do.

Yes it would have been better if it was command line, but Turing is a language, and a IDE, it's a privately owned thing, and making it into pieces means that others could have made money off of selling IDE's or compilers or whatever. Rather the entire thing is one program, and that is property of Holt Soft. (Of course it didn't stop the company from going under, but it wouldn't of helped if they made them seperate).

In the realistic buisness world, things can't always be as simple as Linux. Things need GUI, things need easy to use libraries, that have lot's of tools to augment them.

You shouldn't only work on cross platform, you need expertise with specific, closed source, targeted applications in order to be prepared for a computer science job (not including web dev)

Author:  Insectoid [ Sat Dec 04, 2010 9:35 pm ]
Post subject:  RE:My rant on "cross platform"

Turing would have worked better as a typical compiler. If it was cross-platform and ran through the command line (thus allowing 3rd party IDE software) it would be treated as less of a joke, and therefore it would probably be _marginally_ more popular and hence more successful.

Developing Turing as an all-in-one tool is what screwed Holtsoft over. If they provided a front-end IDE with the back-end compiler, then Holtsoft could provide the benefit of having a product that 'just works' out-of-the-box, while maintaining flexibility and meeting the demands of more advanced users.

Author:  DtY [ Sat Dec 04, 2010 9:58 pm ]
Post subject:  Re: RE:My rant on "cross platform"

mirhagk @ Sat Dec 04, 2010 9:22 pm wrote:
In the realistic buisness world, things can't always be as simple as Linux.
As simple as Linux? You mean as simple to use? I cannot imagine what other part of Linux could be considered "simple", and that's only possible for most people thanks to one or two specific distributions.

Author:  mirhagk [ Sat Dec 04, 2010 11:27 pm ]
Post subject:  Re: RE:My rant on "cross platform"

DtY @ Sat Dec 04, 2010 9:58 pm wrote:
mirhagk @ Sat Dec 04, 2010 9:22 pm wrote:
In the realistic buisness world, things can't always be as simple as Linux.
As simple as Linux? You mean as simple to use? I cannot imagine what other part of Linux could be considered "simple", and that's only possible for most people thanks to one or two specific distributions.


I meant simple as in no GUI, and open sourced, and free, and everyone making programs that run the best, not putting in anti-pirate measures and stuff.

Author:  Dan [ Sun Dec 05, 2010 12:32 am ]
Post subject:  Re: RE:My rant on "cross platform"

mirhagk @ 4th December 2010, 9:22 pm wrote:
yes seperating front from back works for free software, but realistically, not everything can be free.


"Free as in freedom not free as in beer" ~ RMS.

It's not about it being free in terms of cost but free in terms of how it can be used.

mirhagk wrote:

Yes firefox, apache and many many other things work great free, but computer science in general would not be as advanced as it is right now without people making money off of it.


You do know mozilla is a real company and makes real money off firefox, right?

There are many comapies that develop "free" software and still make lots of money.

Also business is not the only source of research in computer science, many universities have computer science deparments, many of which have research programs. The funding for this research comes from many sources including goverment, the universite it's self, as well as private sources.


mirhagk wrote:

Yes it would have been better if it was command line, but Turing is a language, and a IDE, it's a privately owned thing, and making it into pieces means that others could have made money off of selling IDE's or compilers or whatever. Rather the entire thing is one program, and that is property of Holt Soft. (Of course it didn't stop the company from going under, but it wouldn't of helped if they made them seperate).


Thats ridiculous.

First of all, when you sell software you are aucataly selling a license to use that software. If Holtsoft did not won't peoleop to make their own IDE they could simply sate that in their license. Also if you knew the history of turing you would know that the first versions did have a CLI and that the modern windows versions had a CLI up till about version 4 (tho it was more of a patch you got from holt soft). In fact the first modern turing GUI based IDEs where not aucataly made by holt soft but by invduiduals who offered it for free and was then basicly duplicated by holtsoft. The reason why the IDE and complier are combined in turing has more to do with bad design, a flawed idea of simple + no options = educational and holt soft lacking devlopers to proplery plan and maintain thier software.

Secondly even Microsoft, one of the major piroritairy programming langue vendors, do not do this with their visual studio IDE and compliers. Visual Basics, C#, J#, Visual C/C++, etc all have a CLI backend and visual studio front end.

Thridly, this kind of poor design makes it imposible to have scripts to automate the building and testing of your programs. This ability is critical in both "real world" and open source software devlopment.

Finianly poor design is not any kind of DRM or seucirty. If it was used as such it would fall under seucrity thorugh obscurity. If their was any one with the skills and enough time they could make a hack to either spearte the complier from turing or create scripts to automate the running of the turing IDE. How do you think the DWITE judge does it (HINT: it's not a person manualy opening a file in turing, running it and then closing it).

mirhagk wrote:

In the realistic buisness world, things can't always be as simple as Linux. Things need GUI, things need easy to use libraries, that have lot's of tools to augment them.


Why not?

In the business world much of the computing work is done via automated systems which have no humman constaly clicking buttons to make them work. Most server software for example does not have a GUI built in by deafult as it just used up resources and their is no need for any one to be driving the program.

Also Linux and *nix based OSs do have GUIs. They simply give the user the option of having one or not. If you want to set up a server, it makes litte sence for it to have one and would make remoting into it a nightmare (just think of ssh vs remote desktop). However if a linux box is being set up as a users desktop then they get both a full GUI and a powerfull CLI.

I am not sure what you mean by "Things need GUI, things need easy to use libraries, that have lot's of tools to augment them." but Linux does have many programs that have GUIs and many libraries that support them. You make it sound like you can only have a command line when you use linux. Not only can you have a GUI/desktop, you can pick from tones of possbilies and have far more control over them then in Windows or if you don't care you can just use a distro like ubuntu that sets it all up for you. (This is noramly the case for most unix based OS).

mirhagk wrote:

You shouldn't only work on cross platform, you need expertise with specific, closed source, targeted applications in order to be prepared for a computer science job (not including web dev)


I am starting to question if you fully understand what cross platform means, it has nothing to do with closed or open source. Also cross platform has nothing to do with GUI vs CLI, beyond it being a good idea to spearte your GUI frontend from the backend in some cases. Their are many GUI based programs that work on both Windows and Unix based enviroments.

Also computer science has as much to do with "expertise with specific, closed source, targeted applications" as surgery has to do with "expertise with cutco knives". If you want to prepare for a computer science realted job you need expertise with the concepts, algorthims, complexiy, problem sovling and good software engering partices (assuming we are talking about programing jobs). Once you understand the concepts, everything else is just syntax.


P.S.: I am starting to think you are just a troll, as your position is becoming more and more ridiculous

Author:  mirhagk [ Sun Dec 05, 2010 9:17 am ]
Post subject:  RE:My rant on "cross platform"

When I said not including web dev, I meant not including internet programming at all, sorry should have said that. Obviously network stuff works without a GUI.

But what I mean is that if your developing a commercial product, sacrificing cross-platform ness for development time is not only okay, but sometimes neccassary. You have to admit that using a advanced auto-fll IDE such as visual studio 2008 C# is faster than working with a command line C++ compiler.

Author:  jcollins1991 [ Sun Dec 05, 2010 10:11 am ]
Post subject:  Re: RE:My rant on "cross platform"

mirhagk @ Sun Dec 05, 2010 9:17 am wrote:
You have to admit that using a advanced auto-fll IDE such as visual studio 2008 C# is faster than working with a command line C++ compiler.


Maybe when someone is beginning to program it's faster, but with anyone who knows what they're doing it's more about their programming practices (testing and such) than about whether or not they have a pretty compile and run button and debugger.

mirhagk @ Sun Dec 05, 2010 9:17 am wrote:
But what I mean is that if your developing a commercial product, sacrificing cross-platform ness for development time is not only okay, but sometimes neccassary.


I see no reason for it to be necessary, unless the only available cross-platform library has abysmal documentation or is just plain shitty. Development time will be affected much more by the quality of management, the code writing/testing practices of the programmers on the project, and by any logical roadblocks encountered. Maybe for smaller projects (< 1 month) it'd be faster to use a certain library if it's designed EXACTLY for what you're trying to do, but in the long run the time spent learning something new will not only be insignificant, but could also be useful in the future if a team decides to use the same libraries again.

Author:  Dan [ Sun Dec 05, 2010 6:16 pm ]
Post subject:  Re: RE:My rant on "cross platform"

mirhagk @ 5th December 2010, 9:17 am wrote:
When I said not including web dev, I meant not including internet programming at all, sorry should have said that. Obviously network stuff works without a GUI.


Many of my points applied to any kind of devlopment and a masvie amount of devlopment involves the internet, a intranet or the web. This area is only going to increass in size as more applications are moved to the cloud.

mirhagk wrote:

But what I mean is that if your developing a commercial product, sacrificing cross-platform ness for development time is not only okay, but sometimes neccassary.


Only if you want to cut out a large market share or users on OS X, Unix or Linux. If you are using good programming partices and tools that keep "cross-platform ness" in mind then the devlopment time of porting your code to a new platform is minimal if any is required at all.

Quote:

You have to admit that using a advanced auto-fll IDE such as visual studio 2008 C# is faster than working with a command line C++ compiler.


That comaprsion makes no sence, Visual Studio is an IDE not a complier. Why would a complier have auto fill? How could a complier have autofill? What does this have to do with cross platform?

Visual Studio aucatacly calls the same complier (assuming you mean Vissual Studio IDE vs the microsoft C++ command line complier)....

If you wanted to make a point you should have used a GUI based IDE vs a CLI editor. For example Visual Studio vs VI or vim or nano, etc. However their are tones of peoleop that would tell you that VI aucatactly gives you more power over your eidting and allows you code and perfome opeartions on text much faster then a GUI (i still perfure nano my self tho).

Also no one in this thread side that GUI is bad, just that it should be spearted from the backend in many cases and that it is not allways superior to the CLI. Visual Studio aucataly does this making your point even more odd......

Author:  mirhagk [ Sun Dec 05, 2010 9:38 pm ]
Post subject:  RE:My rant on "cross platform"

The fact that you don't have to ever look at other functions when your trying to remember the order of arguments. And typing Ne then hitting enter is going to be faster than hitting Network (just an example word, auto fill makes typing alot faster).

The fact that you don't have to look at functions you've written before to check arguments, or using completely new functions without even having to consult documentation on argumnets is simply powerful, that's undeniable. And I'm comparing this IDE vs typing code up in a text editor and compiling from the console.

And sometimes powerful tools use only specific filetypes, or libraries, and using it will decrease development time.

Here's what I don't get. All you say cross platform is easy, and benefits the end product, well then why do major companies say screw cross platform and develop for targeted systems, like directx, and windows.

Why do companies do this if it's so bad? The answer is it isn't. Decreases time, and effort.

[this last point is my personal opinion, not neccassarilu backed up by proof, just how i feel] And I don't know, I trust something made by a powerful company more than a cross platform library. Considering OpenGL is maintaioned by a non-profit company, they have no responsibity for errors, and don't have as much to lose as say Microsoft with DirectX. If directX gets major bugs and Microsoft doesn't fix them quickly, they are going to get in serious trouble, this comforts me.

Author:  Insectoid [ Sun Dec 05, 2010 9:58 pm ]
Post subject:  RE:My rant on "cross platform"

Quote:

Why do companies do this if it's so bad? The answer is it isn't. Decreases time, and effort.

[this last point is my personal opinion, not neccassarilu backed up by proof, just how i feel] And I don't know, I trust something made by a powerful company more than a cross platform library. Considering OpenGL is maintaioned by a non-profit company, they have no responsibity for errors, and don't have as much to lose as say Microsoft with DirectX. If directX gets major bugs and Microsoft doesn't fix them quickly, they are going to get in serious trouble, this comforts me.


That isn't an opinion. Opinions have no place in a statement like that. It's either true or false. Fact. That's like saying 'It's my opinion that dolphins are the stupidest creatures on earth'. No, that's not an opinion, because it denies a fact.

Author:  rdrake [ Sun Dec 05, 2010 10:01 pm ]
Post subject:  Re: RE:My rant on "cross platform"

mirhagk @ Sun Dec 05, 2010 9:38 pm wrote:
The fact that you don't have to ever look at other functions when your trying to remember the order of arguments. And typing Ne then hitting enter is going to be faster than hitting Network (just an example word, auto fill makes typing alot faster).
Sure, if you were comparing writing C# in Visual Studio to writing C# in Notepad. I could also just use another language and get a lot done in less time.

mirhagk @ Sun Dec 05, 2010 9:38 pm wrote:
And sometimes powerful tools use only specific filetypes, or libraries, and using it will decrease development time.
wat.

mirhagk @ Sun Dec 05, 2010 9:38 pm wrote:
Here's what I don't get. All you say cross platform is easy, and benefits the end product, well then why do major companies say screw cross platform and develop for targeted systems, like directx, and windows.
There are an unfortunate amount of people who think the same way you do.

mirhagk @ Sun Dec 05, 2010 9:38 pm wrote:
And I don't know, I trust something made by a powerful company more than a cross platform library. Considering OpenGL is maintaioned by a non-profit company, they have no responsibity for errors, and don't have as much to lose as say Microsoft with DirectX. If directX gets major bugs and Microsoft doesn't fix them quickly, they are going to get in serious trouble, this comforts me.
Yup, OpenGL isn't backed by any powerful companies or academic institutions at all. Major graphics card manufacturers like, say, Nvidia, have nothing to lose with OpenGL's failure. It's just a filthy slum Rolling Eyes.

Note: Since you're unlikely to even read this post in its entirety, let alone look into the Khronos Group, it's an industry consortium that basically manages OpenGL.

mirhagk @ Sun Dec 05, 2010 9:38 pm wrote:
[this last point is my personal opinion, not neccassarilu backed up by proof, just how i feel]
So far this is how all of your arguments have been made.

Author:  TheGuardian001 [ Sun Dec 05, 2010 10:49 pm ]
Post subject:  Re: My rant on "cross platform"

Wait wait wait. Let me get something straight.
You guys kept taking him seriously after he said Java had no standard?

Nobody who can be that objectively wrong is ever going to make a coherent argument.

Author:  rdrake [ Sun Dec 05, 2010 11:35 pm ]
Post subject:  Re: My rant on "cross platform"

TheGuardian001 @ Sun Dec 05, 2010 10:49 pm wrote:
Wait wait wait. Let me get something straight.
You guys kept taking him seriously after he said Java had no standard?

Nobody who can be that objectively wrong is ever going to make a coherent argument.
I can't say I have ever taken him seriously. It's mostly entertaining to reply at this point. There really is nothing meaningful coming out of this thread.

Author:  Dan [ Mon Dec 06, 2010 12:02 am ]
Post subject:  Re: RE:My rant on "cross platform"

mirhagk @ 5th December 2010, 9:38 pm wrote:
The fact that you don't have to ever look at other functions when your trying to remember the order of arguments. And typing Ne then hitting enter is going to be faster than hitting Network (just an example word, auto fill makes typing alot faster).


What?

Why would auto fill be going to the network? And you do know that some CLI editors have auto fill and even syntax highlighting right? And again what does this have to do with cross platfrom or even GUI?


mirhagk wrote:

The fact that you don't have to look at functions you've written before to check arguments, or using completely new functions without even having to consult documentation on argumnets is simply powerful, that's undeniable. And I'm comparing this IDE vs typing code up in a text editor and compiling from the console.


But both text editors and IDEs are GUIs....

What kind of point is that? And even if you meant a CLI editor, some have auto fill....

And why would you be comparing and IDE and a test editor in the first place.......

My head hurts.


mirhagk wrote:

And sometimes powerful tools use only specific filetypes, or libraries, and using it will decrease development time.


What?

mirhagk wrote:

Here's what I don't get. All you say cross platform is easy, and benefits the end product, well then why do major companies say screw cross platform and develop for targeted systems, like directx, and windows.


Argumentum ad populum.

mirhagk wrote:

Why do companies do this if it's so bad? The answer is it isn't. Decreases time, and effort.


Argument from authority.


mirhagk wrote:

[this last point is my personal opinion, not neccassarilu backed up by proof, just how i feel] And I don't know, I trust something made by a powerful company more than a cross platform library.


Why?

With open source any one can check the code and ensure it's security and correctness, no trust is needed. In the closed source model you HAVE TO trust. You have to trust that a "powerfull" company is looking out for your privacy and rights and is going to make honest, secure and correct software. Companies only think about maxizing profits not producing the best product or ensure your security or privacy. Most "powerfull" companies would throw away a users privacy or lower the quality of their product if it meant more profit and happy share holders.

mirhagk wrote:

Considering OpenGL is maintaioned by a non-profit company, they have no responsibity for errors, and don't have as much to lose as say Microsoft with DirectX. If directX gets major bugs and Microsoft doesn't fix them quickly, they are going to get in serious trouble, this comforts me.


What does this have to do with GUI or cross platform?

Any how, with opengl any one can fix that bug, with microsoft only they can. If your company needs that bug fixed, with opengl they are free to fix it, with directX they need to hope that microsoft thinks it's profitable enough to have their devloeprs work on it.

Also as rdrake pointed out their are alot of comapies and orginastions out their working on opengl, as well as countless individuals.

Finlay non-profit does not mean they don't make money or don't have payed emypolies or don't care about what they do, it just means they don't have shareholders and the profit just goes back into the company.

Their are countless examples of where the open source alternatives are more popular, better quality or more "free" then the closed source version. Cell phones are a great example. Right now the most used cell phone OS is symbian. Symbian is open source and owned by a non-profit (The Symbian Foundation) and is on more cell phones in the world then Windows Mobile, or the IPhone OS. Also in the cell phone world their is Android an open source OS that easily rivals the IPhone OS and gives their users true freedome. Mean while the Windows Mobile OS is strogling to even be notable, if Windows Mobile 7 does not pan out, it could very well be the end of the closed source, "company made" OS.


This will be my last reply as it is clear you are not reading our posts (or simply ignoring the content as you don't respond to any of the points) and i still think you are a troll (tho with poe's law and all it's hard to tell).

Author:  btiffin [ Mon Dec 06, 2010 12:50 am ]
Post subject:  Re: My rant on "cross platform"

mirhagk @ Sun Nov 28, 2010 10:58 pm wrote:
Rather than using something that works on linux, and then building a windows port, why don't we do the opposite. 99% of people have windows, and almost nooone who doesn't understand programming uses linux. So rather than sticking these people with the task of trying to search through undocumented sites trying to find and install undocumented code (very little of which is compiled, most are source code, which is useless to the average user), why don't we give that task to those tech-savvy enough to run linux?


Old guy ranting...
People that want to spend money on software need not worry about anything. If you play with Windows software, you pay money, it works, err, well, it installs with two clicks.

What I think you might be getting frustrated on, is the fact that the proprietary system doesn't easily run the free and open software of the world. In my humble opinion, too bad.

We all feel lucky we are allowed to mine the web for undocumented sites to find and install undocumented code. The price of freedom. If you play in Windows, you get reams and reams of documented sites that let you find and install well documented "your" copies of "their" binaries of compiled code. The price of price. All good, and is the natural order.

I prefer the price of freedom. (And imho, one of the weird parts is; with free, you have no need to pirate; free and clear. I had a refurbished machine's XP license expire with the batch key number used by installers for big orders, and now I get greeted as a criminal (or dupe with a counterfeit) when I boot into that XP partition, so I don't...the real key is on the box, but, really?, I have to type in some weird key, risk losing access beyond being shamed, call some rep or what not. Don't care enough, and I find it a strike against the price of price ... they have to treat every 'customer' with suspicion.)

Sadly perhaps, if you ever bump into any of my code on the net, it'll be half-arsed documented and likely won't work on Windows. Today's post was OpenCOBOL calling Vala calling libsoup for an easy peasy RESTful HTTP server.
Cheers

Author:  mirhagk [ Mon Dec 06, 2010 8:33 am ]
Post subject:  Re: RE:My rant on "cross platform"

rdrake @ Sun Dec 05, 2010 10:01 pm wrote:

Note: Since you're unlikely to even read this post in its entirety, let alone look into the Khronos Group, it's an industry consortium that basically manages OpenGL.

I know of the khronos group, and I never said that there was proof that openGL was worse, so i don't know why your all providing facts about how it's not. It's my own personal opinion that I don't trust open source software to deliver the same. Of course it does in a lot of scenarios, I'm not denying that, I just don't wanna put my hopes on it. And I'd rather use something that comes with a clear set of quality tools then search around for tools for open source programs. I'd rather get all the stuff from one company, then search for other's tools and tutorials. That's why I don't do cross platform tools, cuz I don't trust open source, and it makes it more difficult to work with.

Plus I feel guilty being a mooch, just using free software without ever supporting the software industry, so I like paying for products from companies sometimes.

IMO open source doesn't provide an entirely sustainable system of growth, yes there are universities investing time and money into research, but again, where does that come from? Mostly from private corporations interested in using the research in their own products. Communism allows no room for growth, and open source is communism. Yes they are a lot of great things about it, but it's not completely sustainable.
Dan @ Sun Dec 05, 2010 9:38 pm wrote:

This will be my last reply as it is clear you are not reading our posts (or simply ignoring the content as you don't respond to any of the points) and i still think you are a troll (tho with poe's law and all it's hard to tell).
I don't have the time to quote every single person's posts and reply to each point individually, so I choose one point and reply to it.

Author:  Insectoid [ Mon Dec 06, 2010 8:58 am ]
Post subject:  RE:My rant on "cross platform"

Quote:
Communism allows no room for growth, and open source is communism.


Rofl. In true communism, the government owns everything, and distributes it to the people 'evenly'. You don't HAVE to make free open-source projects. You still have complete control over your product. You share because you want to, not because you have to. While other people may mess around with your code, YOU choose what version to make available. The author of the code has almost complete control. Communist citizens have almost no control.

Open source projects are generally made for the community and the authors love their work. If they mess up, they have the community to answer to. They are doing it because they WANT to create a quality product. If the product sucks, nobody will use it, and it won't matter that it sucks anymore.
Closed source products are created by companies like Microsoft who are only in it for the money and only have themselves to answer to. They can take shortcuts and they can afford bugs, because they know that 90% of the customer base is Joe Average, and will buy it anyway.

Author:  jcollins1991 [ Mon Dec 06, 2010 9:24 am ]
Post subject:  Re: RE:My rant on "cross platform"

mirhagk @ Mon Dec 06, 2010 8:33 am wrote:
IMO open source doesn't provide an entirely sustainable system of growth, yes there are universities investing time and money into research, but again, where does that come from? Mostly from private corporations interested in using the research in their own products. Communism allows no room for growth, and open source is communism. Yes they are a lot of great things about it, but it's not completely sustainable.


Lol how much of the market do you actually think is sustained by selling software? Of course there are many companies who completely rely on it, but in the end more money is earnt selling high quality products to businesses than selling simple software to consumers. Google itself earns 99% of its revenue from advertising, and Apple earns less than 10% their revenue from software (search for yourself if you don't believe me).

When you need a highly professional tool you'll probably want to pay for it, but in most cases open-source stuff is acceptable, if not simpler to use considering most libraries have extremely good documentation, possibly better than what you'd find on any software companies site.

Author:  wtd [ Mon Dec 06, 2010 3:09 pm ]
Post subject:  RE:My rant on "cross platform"

Actually, we have no idea how Communism would fare on a large scale, as it's never been tried.

Author:  wtd [ Mon Dec 06, 2010 3:21 pm ]
Post subject:  RE:My rant on "cross platform"

The core premise at work here is that cross-platform programs cannot be good, or at least not as good as ones targeted at a specific platform.

This can be demonstrated by numerous examples to be true, if we assume that cross-platform apps must possess cross-platform UIs.

The trick to producing good cross-platform applications must then be to separate the underlying logic from the UI, such that improvements to both can be made independently.

Open source development can be proven with numerous examples to aid this decoupled development model, with many contributors working to improve the underlying logic, and then monetize their contributions via application-specific UI work which exposes that underlying functionality.


: