# Software Development?



## jayhusky (May 5, 2008)

Hey All,

Does anybody know of any software design programs?

I'm just curious about it..


Thanks..


----------



## Kimmerset (May 5, 2008)

What language are you using?


----------



## Grimfang (May 5, 2008)

Really depends on what you're trying to do, and with what language.

I have really limited experience, but Visual Basic was very, very easy to use. I couldn't tell you how useful it is to what you need done. I think its potential is somewhat limited :\


----------



## net-cat (May 6, 2008)

I'm going to have to have to echo the "It depends on what you want to do." sentiment...


----------



## Aurali (May 6, 2008)

It usually depends on what you have to use.. and what OS you are developing on/for, and how much money you want to spend...   

I usually use visual studio though.. o.o;


----------



## Eevee (May 6, 2008)

_Design_ program?

That doesn't sound like an IDE.  What do you want, exactly?


----------



## jayhusky (May 6, 2008)

I was just thinking about a program design one..

E.g Design a program -- MS word.. That kind of stuff....


----------



## Aurali (May 6, 2008)

okay your just confusing me more.. do you want to program a program? or do you want a program that creates other things?


----------



## net-cat (May 6, 2008)

Sounds like he wants Visual Basic 6.


----------



## eb7w5yfe (May 7, 2008)

It sounds to me like he doesn't know what he wants, so I'll try a brief explanation:

You don't need a program to design computer programs.  Computer programs are, at a low level, nothing but a set of instructions which the computer follows in order to accomplish some task.

The programs which a computer executes are not in a form that us mere humans can easily work with, so we have made up numerous 'programming languages'.  The majority of computer programs are written in one of these 'programming languages', and then run through another computer program to translate the set of instructions into something which the computer can understand and act upon.

A computer program written in one of these languages is nothing more than a simple text file.  So you can write a computer program with just about any text editor.  Even notepad will work for creating computer programs.

Although notepad will work for creating computer programs, it's not the most efficient method available.  There are numerous programs available which makes it easier to create programs, such as Visual Studio and Visual Basic which people have already mentioned.  Some of these are just fancy text editors.  Others will go further in assisting you, such as letting you lay out a user interface visually and generating the code for that visual layout automatically.  At the base, however, all of these programs are just assisting you in creating the simple text programs which you could edit with notepad.

Now, you asked about designing programs which is actually distinct from creating programs.  There is a wide spectrum of program design.  At the simplest end is someone who thinks of a design for a program, and then goes and writes that directly into a program using a text editor.  At the opposite end of the spectrum, you have large programs carefully designed by dozens of people.  For a program like this, you might have one group of people write out a document specifying how the program should work, another group of people drawing user interface concepts in graphics software, and a third group of people working from the documents and artwork to create the actual program.

Do you see why asking about software design programs is a complicated question?  You could say, perfectly accurately, that Photoshop is a software design program because you can create the user interface concepts in it.  You can likewise say that Word is a software design program because the program's specification is written up in it.  Notepad is another software design program, since you can use it to write out the set of instructions which gets translated into the program that the computer executes.


----------



## jayhusky (May 7, 2008)

I see now why I'm confusing people.

This is all I was on about


"A computer program written in one of these languages is nothing more than a simple text file. So you can write a computer program with just about any text editor. Even notepad will work for creating computer programs."

If this still confuses people Then I will say this

I only wanted to know what kind of programs you can use to make a  .exe file which runs like a program NOT a game.


----------



## Eevee (May 7, 2008)

Dude you should probably take a class or read a book or something.

What you want is a compiler or interpreter, depending on the language.  Neither of those are going to help if you don't know a language in the first place, though.

If you are just asking how to get into programming, get a solid text editor and knock yourself out.  But you're not going to learn anything by asking "what program can I use to make MS Word".  Software that big and complicated takes millions of dollars and man-hours to create.


----------



## XERO (May 7, 2008)

To write programs, nothing is better than *nix+vim(sorry emacs fans)+gcc, as the Windows API from what I've heard is overly bloated. After you run your source code, written in your language, through its respective compiler. The compiler will generate what is called a binary file (what most would call an .exe file). This is assuming that no errors were reported.
If your language is interpreted, then a binary file is not created, rather the source code is "compiled" on the fly while the interpreter is going through it. 

I'd suggest the following:

1) Decide what language your going to use.

2) Learn the language well.

3) Design your program on pen+paper first.

4) Start coding the foundations of the program. 
The foundation for lets say a word processor involves the types of things necessary for a word processor to do ( editing text, saving, opening,etc. ).

5) Make sure the foundation is very, very stable. 
We want it to crash as close to never as possible.

6a) Put it into Alpha testing stage. 
You will have a stable program that does one thing, and does it well.

6b) Start adding more features little by little.
You will have a program that does many things, but can become bloated and overly complex easily.


----------



## jayhusky (May 7, 2008)

Ok I think I have enough to be etting on with....

Thanks for all your comments and help. Really appreciated.


Yours

--Furcity


----------



## Aurali (May 7, 2008)

though I agree that the windows API is overly bloated, you don't need nix to make a good text base program

Hell.. if you want any lessons Furcity.. I can very easily teach you C++ :3


----------



## BlueVmon (May 7, 2008)

Most inhouse company development is with C# now adays... Honestly though, anything that uses .net 3.5 framework is so easy to develop with it's laughable... Oh how I miss the days of Basic and waiting 20 minutes for a program to compile...


----------



## skulltoe (May 7, 2008)

Eli said:


> though I agree that the windows API is overly bloated, you don't need nix to make a good text base program
> 
> Hell.. if you want any lessons Furcity.. I can very easily teach you C++ :3



Or you could teach me C++, I'd love to learn more, I only know a bit.

But yeah, lots of different ways to make programs. You could write them in C++ or... Java or something, then compile. I recommend Bloodshed Dev C++. I use it alongside Darkbasic Pro to make DLLs.


----------



## jayhusky (May 8, 2008)

Eli said:


> though I agree that the windows API is overly bloated, you don't need nix to make a good text base program
> 
> Hell.. if you want any lessons Furcity.. I can very easily teach you C++ :3




Hmmm I might just take you up on that offer.


----------



## Aurali (May 8, 2008)

add me to MSN then^^ and go find a good compiler.. don't matter which one. as long as it compiles and links properly.


----------



## MetronomeCat (May 14, 2008)

XERO said:


> as the Windows API from what I've heard is overly bloated.



Sounds like a typical Linux user. Could you please provide SAUCE for said quote? Some kind of official proof that the API is 'bloated'? I would very much like to see it.

As for writing programs, I'd advise C++ as a final language or VB6 if you're just gonna goof off. Only differences are C++ is insanely faster but VB6 does a lot of the hard work for you. (Until you get really deep into the API stuff.)


----------



## net-cat (May 14, 2008)

If you're going with C++, I recommend wxWidgets.

It's very portable and hella easier than Win32. Although you'll need to be pretty familiar with OOP concepts like inheritance. wxWidgets uses that a lot.

Actually, you might consider starting with Python and wxPython. Python's pretty easy and wxPython deals with a lot of the cruft inherent in a wxWidgets/C++ app.


----------



## Eevee (May 14, 2008)

Eli said:


> Hell.. if you want any lessons Furcity.. I can very easily teach you C++ :3


[size=+2]Do not learn C++ as a first language.  Ever, period, the end.[/size]

You will waste unbelievable amounts of time worrying about null pointer dereferencing, memory management, how many goddamn stars to put on your variables, etc etc.  It serves no purpose except to get in the way of _learning to write programs_.  Learn Python or Ruby first, if you even need to learn C++ at all.  (The whole language is terribly put together imo in every sense I can think up; even if you need the speed, there are better options for compiling to maching code.)



BlueVmon said:


> Most inhouse company development is with C# now adays... Honestly though, anything that uses .net 3.5 framework is so easy to develop with it's laughable...


Sorry.  Don't trust Microsoft with my code.  I've seen what they do to languages before.

I've also seen what Microsoft does with APIs, and I would prefer to avoid it.  My foray into .NET was cut short when I realized I was typing entire paragraphs for simple operations; .NET is "easy" in the same assbackwards way PHP is "easy".  ASP.NET is even worse.



MetronomeCat said:


> Sounds like a typical Linux user. Could you please provide SAUCE for said quote? Some kind of official proof that the API is 'bloated'? I would very much like to see it.


Well let's see, three seconds with Google gets me..

http://www.winprog.org/tutorial/simple_window.html
vs
http://www.wxpython.org/tut-part1.php

Perhaps comparing C to Python is not entirely fair, but the C++ equivalent of the wxPython example is only a little worse.



MetronomeCat said:


> As for writing programs, I'd advise C++ as a final language or VB6 if you're just gonna goof off. Only differences are C++ is insanely faster but VB6 does a lot of the hard work for you. (Until you get really deep into the API stuff.)


VB is a joke and VB6 is dead.

[size=+3]http://docs.python.org/tut/tut.html[/size]


----------



## supercutefurri58 (May 14, 2008)

Eevee said:


> [size=+2]Do not learn C++ as a first language.  Ever, period, the end.[/size]



this is true

i tried it, i gave up after a week, don't




Eevee said:


> http://www.winprog.org/tutorial/simple_window.html
> vs
> http://www.wxpython.org/tut-part1.php
> 
> Perhaps comparing C to Python is not entirely fair, but the C++ equivalent of the wxPython example is only a little worse.



yeah, that's not a valid comparison at all. python is written is C, and the python interpreter like any windows program uses the win32 api. you could compile that python class down to that C module (in theory, etc.). that's comparing a _very_ high level language to the mid-low-level language it's implemented in for the same criteria. the goals of those two tutorials aren't the same. C++ isn't on the same level as python either (i guess that wasn't a point tho).







it's not that you shouldn't learn to program with the win32 api cause it's bloated, it's that you shouldn't learn to program with win32 cause it won't teach you anything general about programming basics. it's an operating-system specific, and it's low-level. you learn the win32 api if you want to learn OS basics, memory management, advanced i/o, etc. otherwise, all windows programs and languages use the win32 api, but most provide simpler higher level interfaces to it to abstract it (i.e., wxwidgets linked above), cause it's not portable, it's redundant, and it's not necessary that all programmers have to deal with it directy. even when you use it in C or somt, you should do api calls from wrapper functions for reuse, which comes down to the same thing (and use C libraries instead where you can).

as far as the api being bloated, it is a little bit, just cause everything has way too many parameters and really gay types, also overuse of uppercase oh who cares. but it's pretty straightforward to use and generalizes well enough, at least the last time i used it.


----------



## Aurali (May 15, 2008)

Eevee said:


> <snip>



Holy Shi... o.0; you gotta be worse than the linux users!

C++ isn't that hard to learn.. and it was the first language I learned too (out of a total of 12 now :3)

Basic C++ is easy for a text based program, and pointer/reference scenarios aren't that complicated... unless your really desperate to program something.. or had one too many candy bars..


and I'd avoid linux if your wanting to share your work with other peoples (most users sadly still use winXP).. :3 or you might be setting up a whole bunch of crap to make a valid win32 executable off a linux based machine.

and.. isn't Python a scripting language? I can't remember...


----------



## net-cat (May 15, 2008)

MinGW for C/C++ on Windows. It's just GCC, and it's free.

And yes. Python is a scripting language.


----------



## MetronomeCat (May 15, 2008)

supercutefurri58 said:


> yeah, that's not a valid comparison at all. python is written is C, and the python interpreter like any windows program uses the win32 api. you could compile that python class down to that C module (in theory, etc.). that's comparing a _very_ high level language to the mid-low-level language it's implemented in for the same criteria. the goals of those two tutorials aren't the same. C++ isn't on the same level as python either (i guess that wasn't a point tho).



Thank you for saving me all that typing. I was going to say "You realize that both of those are win32 right?"



supercutefurri58 said:


> as far as the api being bloated, it is a little bit, just cause everything has way too many parameters and really gay types, also overuse of uppercase oh who cares. but it's pretty straightforward to use and generalizes well enough, at least the last time i used it.



...You have a point, though something being uppercased doesn't make it so much bloated as it would be a naming convention. The rest of that is right though, they depend WAY too much on backwards compatibility.

And C++ is painfully easy. I worked with VB6 for 4 years and it taught me a lot about OOP, pointers, win32, etc. surprisingly, and moving from VB to C++ was only hard because I was naive. It's very, very simple once you understand the syntax.


----------



## Eevee (May 15, 2008)

supercutefurri58 said:


> yeah, that's not a valid comparison at all. python is written is C, and the python interpreter like any windows program uses the win32 api. you could compile that python class down to that C module (in theory, etc.). that's comparing a _very_ high level language to the mid-low-level language it's implemented in for the same criteria.


I don't know what you're saying here.  My point was that the win32 API is a tangled mess, and that using something high-level is way simpler if (a) you don't need the raw speed and (b) you want to be any semblance of cross-platform.



supercutefurri58 said:


> the goals of those two tutorials aren't the same.


The goal of both tutorials is to show a single dialog.  That is all.



supercutefurri58 said:


> otherwise, all windows programs and languages use the win32 api


Programs that run on a certain OS use that OS's API?  Astounding.



Eli said:


> Holy Shi... o.0; you gotta be worse than the linux users!


Starting off with an unqualified and vague statement like "worse than the linux users" does not give me high hopes that you have reasonable criticism of anything I said.



Eli said:


> Basic C++ is easy for a text based program, and pointer/reference scenarios aren't that complicated...


And a higher-level language is always going to be easier.  Pointers aren't "that" complicated, but they aren't even an issue in a language with no pointers, and they are still yet another pointless concern to distract someone who is trying to learn how to turn a vague abstract goal into a concrete series of steps.

There's also the added bonuses that Python doesn't have a horrendously-designed, slow, bloated standard library, its error messages are not nearly as useless as half of what C++ compilers spit out, there is no compilation step to mess with, it has real code separation functionality built in (lol #include/#define/#ifdef), etc etc.



Eli said:


> and I'd avoid linux if your wanting to share your work with other peoples


Pardon?  An open-source platform doesn't foster sharing?

Who said anything about sharing anyway?  This was about learning.



Eli said:


> or you might be setting up a whole bunch of crap to make a valid win32 executable off a linux based machine.


Cross-compilation is not a new problem.  If GCC knows how to build Windows binaries when running on Windows, then GCC still knows how to build Windows binaries when running on Linux.  Or, of course, you can just find a Windows machine and build on that.



Eli said:


> and.. isn't Python a scripting language? I can't remember...


"Scripting language" doesn't mean anything.  Python is bytecode-compiled and interpreted by its own virtual machine.



MetronomeCat said:


> Thank you for saving me all that typing. I was going to say "You realize that both of those are win32 right?"


What on Earth are you talking about?  Are you confusing terms?  I was criticizing the API, not the platform.  The code _you have to write_ in wxWidgets doesn't use the win32 API at all.



MetronomeCat said:


> And C++ is painfully easy. I worked with VB6 for 4 years


You seem to have missed the "first language" part.



MetronomeCat said:


> and it taught me a lot about OOP, pointers, win32, etc. surprisingly, and moving from VB to C++ was only hard because I was naive. It's very, very simple once you understand the syntax.


PHP is "simple" too, but it's still one of the worst languages around at the moment.

I must point out that an overwhelmingly huge chunk of security holes (as well as plenty of other assorted bugs and crashes) are caused by memory management mistakes in C and C++.  "Easy to write" does not imply "easy to get right".

I am not saying that C++ is _useless_, just that it is has way too much cognitive overhead to make a good first language, and its use involves a lot of tradeoffs that do not always need to be made.


----------



## MetronomeCat (May 15, 2008)

Eevee said:


> I don't know what you're saying here.  My point was that the win32 API is a tangled mess, and that using something high-level is way simpler if (a) you don't need the raw speed and (b) you want to be any semblance of cross-platform.





Eevee said:


> What on Earth are you talking about?  Are you confusing terms?  I was criticizing the API, not the platform.  The code _you have to write_ in wxWidgets doesn't use the win32 API at all.



And you said I was confusing terms. You were trying to say that the Win32 API was overtly difficult, and then presented me with "proof" that it was bloated, though all you actually showed me was the difference between a high level and low level language.



Eevee said:


> Starting off with an unqualified and vague statement like "worse than the linux users" does not give me high hopes that you have reasonable criticism of anything I said.



Thanks for proving the point. Linux users tend to think their word is law and look down upon everyone else, including fellow Linux users, which since you have tended to miss the point in your entire post, that's exactly what you're doing here. This is why I avoid the operating system, user groups, etc. They don't know how to play nice, like young children.



Eevee said:


> And a higher-level language is always going to be easier.  Pointers aren't "that" complicated, but they aren't even an issue in a language with no pointers, and they are still yet another pointless concern to distract someone who is trying to learn how to turn a vague abstract goal into a concrete series of steps.



Who said they had to learn pointers immediately exactly? I didn't learn about pointers for a good year or so and I was doing just fine.



Eevee said:


> its error messages are not nearly as useless as half of what C++ compilers spit out, there is no compilation step to mess with, it has real code separation functionality built in (lol #include/#define/#ifdef), etc etc.



Missing ";" is a useless error message? "Missing variable type, int assumed" is useless? gb2/Mac

All programming languages are compiled at some point. There's run time compilation, build time compilation, and interpretation. Build time is when the programmer does it and the user doesn't have to use a slow program (interpretation) or wait several seconds for the program to start (run time)

And finally, are you trying to say C++ doesn't have #include etc? I'm sure I probably misunderstood that sentence, but it doesn't make much sense from any viewpoint I take on it.



Eevee said:


> Pardon?  An open-source platform doesn't foster sharing?



Grats on missing the point. He quite literally said right after that: "most users sadly still use winXP". I doubt any first time programmer wants to go through the trouble of cross platform compilation.



Eevee said:


> Who said anything about sharing anyway?  This was about learning.



There's virtually no use to programming without sharing it. Also, multiple test users means it's loads easier to find bugs. I'm beginning to doubt you know how to program at this point.



Eevee said:


> "Scripting language" doesn't mean anything.  Python is bytecode-compiled and interpreted by its own virtual machine.



So is Java and Basic, these languages are literally built on scripting languages. Or at least Basic is, I've never liked the other two and thus haven't read up on them at all.



Eevee said:


> You seem to have missed the "first language" part.



No, I picked it up just fine. I was simply trying to say that once you have the gist of one language, learning any other is not difficult at all, and is in fact quite fun. C++ as a first language isn't very difficult at all even for developing full windowed apps if you use google.



Eevee said:


> PHP is "simple" too, but it's still one of the worst languages around at the moment.



Back to that whole "Linux users believe their word is law" ordeal. And you dont even say anything to back it up.



Eevee said:


> I must point out that an overwhelmingly huge chunk of security holes (as well as plenty of other assorted bugs and crashes) are caused by memory management mistakes in C and C++.  "Easy to write" does not imply "easy to get right".



First of all, please find me a source for your information. All programs have exploitable security flaws, the only way to avoid them is to not use a computer. And memory management is almost ALWAYS done by the standard type libraries, which have been in development for years and monitored very well for any and all bugs.



Eevee said:


> I am not saying that C++ is _useless_, just that it is has way too much cognitive overhead to make a good first language, and its use involves a lot of tradeoffs that do not always need to be made.



I taught someone C++ in a single week, and they were completely new to programming. So please do inform me, is it really that hard?

I believe I have pwnt enough for one day.


----------



## Eevee (May 15, 2008)

MetronomeCat said:


> You were trying to say that the Win32 API was overtly difficult, and then presented me with "proof" that it was bloated, though all you actually showed me was the difference between a high level and low level language.


Perhaps I am overloading what I am trying to do here.  My purpose was threefold:
1. give an example of the win32 API used for something trivial, to point out that it is hairy
2. give an example of a higher-level _API_, to point out that it doesn't have to be (hence the link to equivalent C++ wxWidgets)
3. give an example of a higher-level _development environment_ (which includes both the language and the API), to point out the volume of stuff you don't have to worry about with a higher-level language

Maybe I should have listed the links in that order.



MetronomeCat said:


> Thanks for proving the point. Linux users tend to think their word is law and look down upon everyone else, including fellow Linux users, which since you have tended to miss the point in your entire post, that's exactly what you're doing here. This is why I avoid the operating system, user groups, etc. They don't know how to play nice, like young children.


Since when it is unreasonable to assume that a post which _starts off_ by firmly establishing an air of condescension is going to be a little less than objective?  Even in this paragraph you are tossing out non sequitur ad hominems far more than you're actually providing any useful information.  Nothing in "oh boy Linux user bashing" implies that I think my word is law.



MetronomeCat said:


> Who said they had to learn pointers immediately exactly? I didn't learn about pointers for a good year or so and I was doing just fine.


A _year_?  What were you doing for a year that you didn't touch pointers at all?



MetronomeCat said:


> Missing ";" is a useless error message? "Missing variable type, int assumed" is useless? gb2/Mac


Hm.  I say half of compilers' error messages are useless; you respond by citing two that are not.  Useful criticism indeed.

I'm thinking more of the tendency for compilers to, for example, continue to attempt parsing a file even after the preprocessor has failed (e.g. to load a file), resulting in a single error actually describing the problem followed by pages of useless and intimidating nonsense.  The half-assed C type system can also produce some pretty cryptic errors if you make a mistake with anything more complicated than "int".



MetronomeCat said:


> All programming languages are compiled at some point.


Obviously.  I said interpreted languages have no compilation *step*, i.e. you don't have to do anything extra to turn your code into something you can run.



MetronomeCat said:


> And finally, are you trying to say C++ doesn't have #include etc?


No, I am pointing out #include etc as a pathetic excuse for a real packaging system, with the #ifndef _THISFILE_H / #define _THISFILE_H / #endif idiom as part of what's ridiculous about it.



MetronomeCat said:


> Grats on missing the point. He quite literally said right after that: "most users sadly still use winXP".


I didn't miss the point.  I found it a strange thing to say given that almost everything developed for Linux either already runs on Windows (as almost every GUI app ultimately uses GTK or QT, both cross-platform) with little extra work or has been ported by others with interest.  Even the occasional app that doesn't build on Windows can be run under cygwin.  The reverse is not quite so true; the best you can do is throw a Windows app at wine and hope for the best.



MetronomeCat said:


> I doubt any first time programmer wants to go through the trouble of cross platform compilation.


I doubt any first-time programmer is distributing programs.  Generally newbies are busier with, you know, learning to program.  The world doesn't really need another applet for converting Fahrenheit to Celsius.



MetronomeCat said:


> I'm beginning to doubt you know how to program at this point.


I'm beginning to doubt you are capable of actually making a point without resorting to insults.  Regardless, I have seen no evidence of particular prowess from you, either.



MetronomeCat said:


> So is Java and Basic, these languages are literally built on scripting languages.


"Built on" scripting languages?  Howso, and what languages?  Java runs in a VM, and as far as I know Basic is somewhat similar to C++: compiled with overhead.  Not entirely sure about the latter.

I don't know if you're trying to counter something here or what; I was stating how Python's execution works, as "scripting language" is an obsolete term with an ill-defined meaning.



MetronomeCat said:


> Or at least Basic is, I've never liked the other two and thus haven't read up on them at all.


How do you know you don't like them if you've never read up on them at all?



MetronomeCat said:


> No, I picked it up just fine. I was simply trying to say that once you have the gist of one language, learning any other is not difficult at all, and is in fact quite fun.


I know what you mean, but I have to point out that this doesn't apply quite so universally; Haskell comes immediately to mind.



MetronomeCat said:


> Back to that whole "Linux users believe their word is law" ordeal. And you dont even say anything to back it up.


I'm confused as to how you distinguish "making a statement" from "believing one's word is law".  Is your entire post an example of how you think your word is law?  You are, after all, doing exactly what I'm doing: asserting what you think.

I didn't go into it because it's irrelevant to this actual discussion.  I threw it out as an example.  If you require another; it's trivial to learn Brainfuck's syntax too.



MetronomeCat said:


> First of all, please find me a source for your information.


http://www.google.com/search?q="buffer+overflow"+site:secunia.com

Compare number of pages found with:
http://www.google.com/search?q=site:secunia.com



MetronomeCat said:


> All programs have exploitable security flaws, the only way to avoid them is to not use a computer.


This is akin to suggesting I not wear a seatbelt because I might still die in a crash anyway.

Languages with no memory management cannot be susceptible to buffer or overflow bugs, as they have no buffers to overflow in the C sense.



MetronomeCat said:


> I taught someone C++ in a single week, and they were completely new to programming.


How much of it?  How complex (and reliable) are the programs this person can now create?  More importantly, do you really think that in the same time I could not teach a new programmer to use Python more effectively?



MetronomeCat said:


> I believe I have pwnt enough for one day.


I see no pwning; just a programmer of questionable quality who thinks calling Linux users names and defeating strawmen makes him cool.


----------



## Rayne (May 15, 2008)

Eevee said:


> Hm.  I say half of compilers' error messages are useless; you respond by citing two that are not.



Either useless or overly cryptic/long-winded. STL error messages make me want to hurt things.


----------



## Eevee (May 15, 2008)

Yes, let's not forget the sort of labyrinthine feedback you can get when templates are involved...


----------



## Aurali (May 15, 2008)

Templates are crap to use.. would rather make something again from scratch..

Now I read most of what you said, and agree with most of it.. but I gotta make two points:

A scripting language is alright to use, but usually involves a compiler, meaning it won't be leaving his computer. I know most self learned programmers  LOVE sharing their works with their friends.. and that's also what I meant by the whole "linux" thing.

and PHP is simple as well... but it's designed horribly as well... I prefer Perl or JSP for things that "require" PHP...


----------



## Eevee (May 15, 2008)

Eli said:


> A scripting language is alright to use, but usually involves a compiler, meaning it won't be leaving his computer. I know most self learned programmers  LOVE sharing their works with their friends.. and that's also what I meant by the whole "linux" thing.


Well..  sorta.
- The languages you're thinking of require an _interpreter_, not a compiler.
- This is not necessarily a problem; Perl and Python both come with every modern Linux distribution I've used, and most I haven't.  Python is also built into OS X.  Windows is the odd one out in this regard, but it is possible to wrap a Python application in a compact interpreter to make a stand-alone executable.  (The original BitTorrent client, for example, was written in Python.)  Of course, if your app is compelling enough, just ask users to install Python and increase its install based; it's not any harder than installing Java or the .NET framework.
- Compiled programs are not guaranteed to work everywhere either; you might link to some DLL that happens to only come with Visual Studio, for example -- this happened a lot in the 90s, and small utilities would frequently tell you to download the common controls DLL separately.  There are also architecture issues and different versions of Windows and etc.


----------



## supercutefurri58 (May 15, 2008)

whoa, back up there




Eevee said:


> I don't know what you're saying here.  My point was that the win32 API is a tangled mess, and that using something high-level is way simpler if (a) you don't need the raw speed and (b) you want to be any semblance of cross-platform.
> 
> 
> The goal of both tutorials is to show a single dialog.  That is all.



oh why do i do this. NO, the goals aren't the same. the goal of the first tutorial is to create and manage a window in Windows _yourself_, at the lowest possible level, i.e., which really means figuring out how the OS works and how to communicate with it. the goal of the second is to use an interface that makes a window _for_ you, i.e., so you can avoid doing what you wanted to do in the first tutorial. if somebody read the first tutorial really _just to make a simple window_, they made a bad choice somewhere or they were constrained by available resources (language, libraries, etc.).

you can't compare mid-low-level OS commands to a high-level interface which abstracts them, for the specific point you're trying to make (that win32 api is a "tangled mess"). apples and oranges. comparing to python/wxwidgets says absolutely nothing about the quality of the win32 api as an OS interface at this level.

but, LIKE I POSTED THANKS, it's irrelevant whether the win32 api is a tangled mess or not. no, you shouldn't be using it as a language learning tool, but primarily because it's not nearly its function, not because it's crap. that would go for any similar OS. so yes, they should be using what you suggested, but not why you suggested it (which is biased, i don't care for win32 api but it's not that bad, give it a rest).




Eevee said:


> Programs that run on a certain OS use that OS's API?  Astounding.



it wasn't meant for you in particular. a lot of people don't realize it, which is why i rote it. if you don't feel concerned, kill(0,SIGKILL).


*

as far as "scripting languages", python is still a general-purpose language and you can package it easily for most OSes. the support is there, i don't see the problem.


for the last time, please don't recommend C++ to start with. it's a high-level addon to a mid-low-level language, it covers too broad a spectrum.

it's much better to start with a higher level language like python or even java, to learn classes and high-level concepts, and separately (at the same time if you want) learn a lower-level language like c/pascal/asm, to learn simple things like pointers, than to try to mix all that into one big hellish learning experience in C++ (because that's what it encourages without strict guidance) with every ambiguity known to programming.

you should modulate your learning just as much as you modulate your code.





holy fuck i need to get away from computers.


----------



## Eevee (May 15, 2008)

supercutefurri58 said:


> NO, the goals aren't the same. the goal of the first tutorial is to create and manage a window in Windows _yourself_, at the lowest possible level, i.e., which really means figuring out how the OS works and how to communicate with it. the goal of the second is to use an interface that makes a window _for_ you, i.e., so you can avoid doing what you wanted to do in the first tutorial.


You're right, my bad.  I shouldn't have tried to compare it to anything, really; that was an afterthoughty tie-in with the Python thread.  Just saying the win32 API is kinda gross.  8)  (Not saying e.g. X11 is a shining beacon of API design, but at the very least the naming is consistent and simple enough to be vaguely readable.)



supercutefurri58 said:


> comparing to python/wxwidgets says absolutely nothing about the quality of the win32 api as an OS interface at this level.


See, overloading.



supercutefurri58 said:


> i don't care for win32 api but it's not that bad, give it a rest.


I'm not foaming at the mouth over the win32 API; people just keep calling me out on what I said, and I was responding to someone responding to someone else and then promptly forgot what I was going for in the first place.  gg me a++ would read again



supercutefurri58 said:


> it wasn't meant for you in particular. a lot of people don't realize it, which is why i rote it.


That was needlessly curt anyway; I apologize.



supercutefurri58 said:


> it's much better to start with a higher level language like python or even java


Eh, I don't know about Java.  (fd: I can't stand Java.)  It still _pretends_ to be kinda low-level, still has the same sort of half-assed type system (another thing that really just gets in the way when you're starting imo), still has a compile step, etc.



supercutefurri58 said:


> to learn classes and high-level concepts, and separately (at the same time if you want) learn a lower-level language like c/pascal/asm, to learn simple things like pointers, than to try to mix all that into one big hellish learning experience in C++ (because that's what it encourages without strict guidance) with every ambiguity known to programming.


This.

The absolute first thing you need to learn when starting programming is _how to turn a goal into an algorithm_.  A language that has more bookkeeping than writing code is not going to be a good fit for this.


----------



## MetronomeCat (May 16, 2008)

Bah, I'm not even gonna try. Looking on previous experience with Linux trolls, they don't listen or make sense virtually ever. However, if you wish to discuss things, Eevee, please do PM me.

(AKA god damnit my friend is bugging me and I dont have time for a response to the uber-long post atm, remind me later plz. Also, I'm not a guy  Why does everyone assume that?)


----------



## Aurali (May 16, 2008)

Eevee said:


> Well..  sorta.
> - The languages you're thinking of require an _interpreter_, not a compiler.
> - This is not necessarily a problem; Perl and Python both come with every modern Linux distribution I've used, and most I haven't.  Python is also built into OS X.  Windows is the odd one out in this regard, but it is possible to wrap a Python application in a compact interpreter to make a stand-alone executable.  (The original BitTorrent client, for example, was written in Python.)  Of course, if your app is compelling enough, just ask users to install Python and increase its install based; it's not any harder than installing Java or the .NET framework.
> - Compiled programs are not guaranteed to work everywhere either; you might link to some DLL that happens to only come with Visual Studio, for example -- this happened a lot in the 90s, and small utilities would frequently tell you to download the common controls DLL separately.  There are also architecture issues and different versions of Windows and etc.



bleh >< yeah I meant an interpreter..    
Windows does have an interpreter version for it, though one has to download it.. I'm not surprised about microsoft not having one built in though, remembering how much problems they have had with Java... 
Compiled problems aren't garenteed to work either, but anything I've shown or taught how to make I know how to properly encapsulate in a win or linux executable >..>


----------



## Eevee (May 16, 2008)

MetronomeCat said:


> Bah, I'm not even gonna try.


Oh good, that means I win  8)



MetronomeCat said:


> Looking on previous experience with Linux trolls, they don't listen or make sense virtually ever. However, if you wish to discuss things, Eevee, please do PM me.


_GRR YOU'RE A DUMB TROLL GRR GRR IT'S NOT EVEN WORTH MY HYPER-VALUABLE TIME PROVING YOU WRONG SO I WILL JUST ASSERT IT hay we should finish this up sometime why don't you come over for tea and crumpets_

Jesus, get over yourself.



MetronomeCat said:


> (Also, I'm not a guy  Why does everyone assume that?)


I try to use Spivak pronouns whenever appropriate; my bad if I missed one.


----------



## MetronomeCat (May 16, 2008)

Eevee said:


> Oh good, that means I win  8)



Win what?



Eevee said:


> _GRR YOU'RE A DUMB TROLL GRR GRR IT'S NOT EVEN WORTH MY HYPER-VALUABLE TIME TALKING TO YOU hay we should finish this up sometime why don't you come over for tea and crumpets_



That sounds lovely.

Though a full time job is quite limiting on how much time I have to post, I only have that kind of time on Sunday and Monday.



Eevee said:


> I try to use Spivak pronouns whenever appropriate; my bad if I missed one.



Ah hah.



			
				Eevee said:
			
		

> Since when it is unreasonable to assume that a post which starts off by firmly establishing an air of condescension is going to be a little less than objective? Even in this paragraph you are tossing out non sequitur ad hominems far more than you're actually providing any useful information. Nothing in "oh boy Linux user bashing" implies that I think my word is law.



Go to CPPLC and say a certain Linux distro is better than the others. A year long flame war will start about which distro of Linux is best. Or better yet, say you like Microsoft. This tends to occur virtually anywhere I've met Linux users, including work, where some asshole continually calls me an idiot for liking Windows XP. I've considered reporting him but all it's gonna do is make him complain more.



			
				Eevee said:
			
		

> A year? What were you doing for a year that you didn't touch pointers at all?



I didn't say they didn't include pointers, I just said I never really looked into them for quite some time after I started, mostly just copying bits and pieces of code and trying to get my VB6 projects turned into C++ projects.



			
				Eevee said:
			
		

> Hm. I say half of compilers' error messages are useless; you respond by citing two that are not. Useful criticism indeed.
> 
> I'm thinking more of the tendency for compilers to, for example, continue to attempt parsing a file even after the preprocessor has failed (e.g. to load a file), resulting in a single error actually describing the problem followed by pages of useless and intimidating nonsense. The half-assed C type system can also produce some pretty cryptic errors if you make a mistake with anything more complicated than "int".



I actually looked this up when I read that, compiler error messages. The IDE I use is MS Visual C++ 2008, and the error messages that returns are always very clear and detailed, which I've never had problems with, but I looked at some error messages for some other compilers and it does look like Polish...

Thus I believe we're both wrong here, it depends on the compiler you're using.



			
				Eevee said:
			
		

> Obviously. I said interpreted languages have no compilation step, i.e. you don't have to do anything extra to turn your code into something you can run.



Aside from a few file types(.JS and .VBS I believe, though I've never used either), you can just double click an ascii code file and get it to run, but no matter which language you use, you have to convert the code to an executable file.



			
				Eevee said:
			
		

> No, I am pointing out #include etc as a pathetic excuse for a real packaging system, with the #ifndef _THISFILE_H / #define _THISFILE_H / #endif idiom as part of what's ridiculous about it.



#pragma once



			
				Eevee said:
			
		

> The reverse is not quite so true; the best you can do is throw a Windows app at wine and hope for the best.



Are you saying WINE sucks? I've heard only good things about it, like how stable it is etc.



			
				Eevee said:
			
		

> I doubt any first-time programmer is distributing programs. Generally newbies are busier with, you know, learning to program. The world doesn't really need another applet for converting Fahrenheit to Celsius.



Sure they're not going to need it on their first few days, but once they get into larger programs, a few hundred lines or more, they're going to want others to try it out, or they're going to want to show off their handiwork to their friends.



			
				Eevee said:
			
		

> I'm beginning to doubt you are capable of actually making a point without resorting to insults. Regardless, I have seen no evidence of particular prowess from you, either.



When have I insulted you specifically? I did say Linux troll, but I call anyone who uses Linux a troll automatically out of habit, thus it wasn't quite directed at you.



			
				Eevee said:
			
		

> as "scripting language" is an obsolete term with an ill-defined meaning.



This is true, yes. >:

If I may though, Visual Basic 6 and many of the ones before it were built around Visual Basic for Applications, a scripting language that was built for use in Microsoft Word/Power Point/Access/etc. That's where I was going with that.



			
				Eevee said:
			
		

> How do you know you don't like them if you've never read up on them at all?



I haven't looked that deeply into them, but I have tried them. There was a Java compiler that came with Visual Studio 6 if I remember right. And on top of that, when I write code for web pages, it's pretty much only in Javascript.

The really big reason I dont like Java (aside from it's named after coffee, which I hate D: <) is that it seems pretty much just like C++, but it's slower due to the virtual machine.



			
				Eevee said:
			
		

> I know what you mean, but I have to point out that this doesn't apply quite so universally; Haskell comes immediately to mind.



Yeah, you're actually right here, my bad. I suppose I should have said switching across the major languages such as VB or Java to C++ isn't difficult. There are some languages though that still go over my head @_@



			
				Eevee said:
			
		

> I'm confused as to how you distinguish "making a statement" from "believing one's word is law".



Saying something IS the worst isn't saying "I think it's the worst." We all have opinions. :3



			
				Eevee said:
			
		

> http://www.google.com/search?q=%22bu...%3Asecunia.com
> 
> Compare number of pages found with:
> http://www.google.com/search?q=site:secunia.com





			
				MetronomeCat said:
			
		

> First of all, please find me a source for your information. All programs have exploitable security flaws, the only way to avoid them is to not use a computer. And memory management is almost ALWAYS done by the standard type libraries, which have been in development for years and monitored very well for any and all bugs.



In other words, those links point to a lot of very well known security holes which have not only been fixed, but MS VC++ actually reports is a security issue when one tries to compile it. I'm not sure if other compilers do this, but I know MSVC++ does.



			
				Eevee said:
			
		

> This is akin to suggesting I not wear a seatbelt because I might still die in a crash anyway.
> 
> Languages with no memory management cannot be susceptible to buffer or overflow bugs, as they have no buffers to overflow in the C sense.



Actually, it's akin to not getting in the car. Not wearing a seatbelt is akin to downloading "VIRUS.EXE" and running it with full permissions.

And languages with memory management actually are, but only when working with external libraries.



			
				Eevee said:
			
		

> How much of it? How complex (and reliable) are the programs this person can now create? More importantly, do you really think that in the same time I could not teach a new programmer to use Python more effectively?



Him and I are now both working on a full 3D multiplayer game in DirectX.



			
				Eevee said:
			
		

> I see no pwning; just a programmer of questionable quality who thinks calling Linux users names and defeating strawmen makes him cool.



http://www.google.com/search?hl=en&client=firefox-a&rls=org.mozilla%3Aen-US%3Aofficial&hs=2fP&q=discount+glasses&btnG=Search


----------



## Eevee (May 16, 2008)

MetronomeCat said:


> Go to CPPLC and say a certain Linux distro is better than the others. A year long flame war will start about which distro of Linux is best.


Go to ComicCon and say Superman is the best superhero.
Go to FurAffinity and say foxes are the best species.
Go to any group of devoted individuals and throw out an undefended opinion on the issue they care about as if it were fact.  Of course they're going to argue.  Linux _geeks_ are Linux _geeks_ because they care about Linux a lot, thus they devote a lot of time to it and enjoy fervently discussing it etc.  This is distinct from a Linux _user_, which just happens to have a lot of overlap.



MetronomeCat said:


> Or better yet, say you like Microsoft.


Well, uh, yes.  A company that runs misleading campaigns against other platforms and is not exactly unknown for throwing their weight against anything that may make a minor dent in their market share is going to be a sore spot for the people whose toes they trod on.

No, this is not "lolol Microsoft is the devil"; this is "they have their reasons".



MetronomeCat said:


> The IDE I use is MS Visual C++ 2008, and the error messages that returns are always very clear and detailed


That this page even exists (or was popular enough to be trivial to find) makes me wonder: http://averia.unm.edu/VisualCPPErrorMessages.html

From 2004, though.  Anecdotes from more recently don't look any less C++ish though: http://www.itk.org/pipermail/insight-users/2006-July/018861.html http://forums.asp.net/p/991975/1290640.aspx

Moreover, if this has somehow been improved in VC++08, I wonder if it's actually part of the compiler or part of the IDE.



MetronomeCat said:


> Aside from a few file types(.JS and .VBS I believe, though I've never used either), you can just double click an ascii code file and get it to run, but no matter which language you use, you have to convert the code to an executable file.


...yes, and with Python or Perl or Ruby this is built in just like JS or VBS, whereas with C++ or Java you have to do it in a separate step.



MetronomeCat said:


> #pragma once


Is not part of C++.



MetronomeCat said:


> Are you saying WINE sucks? I've heard only good things about it, like how stable it is etc.


No, I'm saying wine is not (and is not likely to ever be) perfect, especially as compared to code built from the start actually intended to run on its target platforms.



MetronomeCat said:


> In other words, those links point to a lot of very well known security holes which have not only been fixed


I would imagine that the only buffer overrun holes not fixed are the ones that haven't been found yet.  They tend to be a bit serious and get patched fast.



MetronomeCat said:


> but MS VC++ actually reports is a security issue when one tries to compile it. I'm not sure if other compilers do this, but I know MSVC++ does.


Do you think none of this software was compiled with VC++?  Or that VC++ can infer how every possible garbage collection scheme would interact with program flow?



MetronomeCat said:


> And languages with memory management actually are, but only when working with external libraries.


Guess what languages the external libraries were written in  8)



MetronomeCat said:


> Him and I are now both working on a full 3D multiplayer game in DirectX.


That doesn't really answer anything.


----------



## MetronomeCat (May 17, 2008)

Eevee said:


> No, this is not "lolol Microsoft is the devil"; this is "they have their reasons".



So has every other company in existence. *GASP*



Eevee said:


> That this page even exists (or was popular enough to be trivial to find) makes me wonder: http://averia.unm.edu/VisualCPPErrorMessages.html
> 
> From 2004, though.  Anecdotes from more recently don't look any less C++ish though: http://www.itk.org/pipermail/insight-users/2006-July/018861.html http://forums.asp.net/p/991975/1290640.aspx
> 
> Moreover, if this has somehow been improved in VC++08, I wonder if it's actually part of the compiler or part of the IDE.



Part of the compiler, spits out the same thing as far as error messages when I use a command line.



Eevee said:


> ...yes, and with Python or Perl or Ruby this is built in just like JS or VBS, whereas with C++ or Java you have to do it in a separate step.



F5 in MSVC++ 2k8, runs it immediately.



Eevee said:


> Is not part of C++.



http://en.wikipedia.org/wiki/Pragma_once Wrong.



Eevee said:


> I would imagine that the only buffer overrun holes not fixed are the ones that haven't been found yet.  They tend to be a bit serious and get patched fast.



Agreed, good thing too :3



Eevee said:


> Guess what languages the external libraries were written in  8)



ASM



Eevee said:


> That doesn't really answer anything.



It says him and I are both working on a DirectX game. This covers pointers, memory management, graphics, sound, networking, etc. He's learning the harder stuff as we go, but he's got quite a decent amount of C++ knowledge going for him now :3


----------



## Aurali (May 17, 2008)

(from an earlier point) I'm not a guy either. I put it into my sig until someone who can will put up some sort of identifier for us.


----------



## kevVral (May 17, 2008)

If anybody wants to learn, I can teach HTML and Java...that's my main scope although I have done Python. I also have done C++ and C# but I don't know them well enough.


----------



## MetronomeCat (May 17, 2008)

Eli said:


> (from an earlier point) I'm not a guy either. I put it into my sig until someone who can will put up some sort of identifier for us.



I could tell by the name and avatar :3


----------



## indrora (May 17, 2008)

ok.
this is going to sound like a tl;dr and it is. i'm deftly sorry. i dont like religious wars.
this will be in order of type (web, app, etc) and skill (entry, intermidiate, skilled, etc)

WEB DEVELOPMENT:
You're stuck with HTML at one point. HTML simply says "this is a paragraph. it has this text. this is an image. it has this source image. its this high and has these other properties. Server-Side Development involves learning both the server-side tech (either ASP.NET with C# or VB.NET or PHP are the two big ones) and HTML. Styles are all done in CSS (Cascading Style Sheets.) if you want to learn this stuff, you're gonna use Notepad or Metapad with a book like Web Design In a Nutshell or Using HTML4 Sixth or seventh edition.

WINDOWS/WIN32
you've got a plethera of options.
BEGINNER:
SiMPLE: its all Console based really but what the hell. its a lot like BASIC but it works and its what i learned on.
Visual Basic: Windows Apps are simple to do in VB. the "old" style VB has been replaced with VB.NET. (SEE NOTE ON BOTTOM PLEASE!) Its much like the old ones but it introduces lots of new things like namespace extentions like My.Dongs (real one too! it keeps track of weed consumption... not that i know about it... i just stumbled on it...)
Upwards: Python and C# are good places to start. you really should just pick up a copy of the express editions of Visual Studio and play.

Linux:
BEGINNER:
learn fckin bash! there is something purely UNIX-y about

```
tail /var/log/messages/ > /tmp/mt; more /tmp/mt; grep /tmp/mt "eth0"; grep /tmp/mt "fail"; echo "done"
```
EVERYTHING ELSE:
Python, Kommander, C#... yes you can do C# development on Linux... just pick and choose
I'd recommend Python and C though.

Cross Platform:
Python, C, C++, etc... theres plenty.

Moral of this story: play with some languages you feel comfortable with until you've gotten one down on your own... THEN buy a book. 

Another little thing... learn some hardware stuff... PicBASIC runs nicely on a Basic Stamp. they run under $50 and get you a board, cables and dev environment (you can really do most of it in notepad and the little environment.)

really. learn how do deal with 3k of app space


NOTE: I am not a m$ fanboy. i'm a member of the local .NET user group though, and i do a LOT of VB work.


----------



## Eevee (May 18, 2008)

Oh god do not use PHP or Notepad, those are like the dregs at the bottom of the coffee can of programming.  Notepad is trivially superceded by emacs or vim or (if you are seriously wanting to work in a text-based field but don't want to learn a text editor) Notepad++ etc.  PHP is full of broken or missing features and doesn't really have anything on Perl/Python/Ruby.
Meanwhile ASP.NET is the most convoluted way to do Web programming I have ever seen so I can't really recommend that either..


----------



## indrora (May 19, 2008)

Eevee said:


> Oh god do not use PHP or Notepad, those are like the dregs at the bottom of the coffee can of programming.  Notepad is trivially superceded by emacs or vim or (if you are seriously wanting to work in a text-based field but don't want to learn a text editor) Notepad++ etc.  PHP is full of broken or missing features and doesn't really have anything on Perl/Python/Ruby.
> Meanwhile ASP.NET is the most convoluted way to do Web programming I have ever seen so I can't really recommend that either..



a) Notepad YES is a POS. Metapad is decent and i really cant say Notepad++ is any better. Komodo Edit is a free version of Komodo IDE. I like it.
b) PHP is not all that bad. i've used it for some time now and Its not as bad as oh say... LolCode or (oh please spare me) perl. or brainfuck.
c) ASP.NET yes is rather odd. its not convoluted though. its a good way to learn how NOT to do web apps.

(oh and i think you're bashing your own sites here because the forums and FA are both in PHP.)


----------



## net-cat (May 19, 2008)

PHP isn't terrible, although I've recently come to find languages that are many times better.

I wouldn't recommend learning with PHP. If you must, stay far, far away from the user-contributed examples. They can be injection ridden pieces of crap.


----------



## Aurali (May 19, 2008)

indrora said:


> a) Notepad YES is a POS. Metapad is decent and i really cant say Notepad++ is any better. Komodo Edit is a free version of Komodo IDE. I like it.
> b) PHP is not all that bad. i've used it for some time now and Its not as bad as oh say... LolCode or (oh please spare me) perl. or brainfuck.
> (oh and i think you're bashing your own sites here because the forums and FA are both in PHP.)



some sites need php components.. my site is ran on 80% perl. cause I find it easier on my systems then PHP (that and PHP has a file size limit.. and I run a movie archive ><). though, certain pieces are ran as PHP, cause as earlier said.. it's easier.


----------



## Eevee (May 19, 2008)

indrora said:


> b) PHP is not all that bad. i've used it for some time now and Its not as bad as oh say... LolCode or (oh please spare me) perl. or brainfuck.


Perl is in the same category as esoteric languages?  wtf  :V

Everything in PHP is broken and/or has several iterations of varying brokenness (lol mysql_escape_string no wait mysql_real_escape_string no wait mysqli).  There are no closures or lambdas; functions aren't first-class objects.  Merging hashes and arrays is preposterous.  Classes feel tacked on and gimpy.  Namespaces aren't in yet and it's far too late for them anyway; everyone has taken up their C-style prefixes, and if there's not going to be symbol importing then namespaces don't even solve the problem.  Large chunks of functionality are controlled by your server admin, not you.  The library is full of functions that vary in minor ways, usually because of the awfully simplified syntax; e.g. there are some 24+ find-in-string functions built in.  Early design decisions like including files over http, register_globals, and having database support that encourages sql injection still create security problems now.  There is no real professional community I've ever found; just Zend creating a language and a lot of amateurs swapping copy/paste code samples.

PHP is a bad templating language that outgrew its roots and became a very bad general-purpose language.  The language itself has no redeeming qualities whatsoever, and even ubiquity of the interpreter doesn't work so well when so much of the language's behavior is controlled server-wide.  Everything it does is done better by other languages.  Nobody has ever even proposed a counter-example to me.



indrora said:


> (oh and i think you're bashing your own sites here because the forums and FA are both in PHP.)


Yes, and look at the quality of the FA code.  8)  You may notice we are busily rewriting it from scratch in not-PHP.


----------



## indrora (May 21, 2008)

Holy Shit! Its a religious war!

ok. i will agree that PHP has plenty of aliases but its still a viable language.
ASP.NET is fucked. but PHP has 1 advantage over ASP.NET or any other server-side language that i have yet to find a comparator to: you can modify it and INSTANTLY see the results. its supported on EVERY single os. its small (i have an apache/php install thats about 5mb) and it doesnt suffer from Perl's libperl DLL hell. php is about as static as it gets until you throw extentions on.

as for MySQL injection, thats all a security thing that the programmer should handle. at least its not like the guy here ( http://thedailywtf.com/Articles/Not-Exactly-AJAX.aspx ) that used VB Script Client-Side to do a database call. (shudder)

"""PHP is a bad templating language that outgrew its roots and became a very bad general-purpose language. The language itself has no redeeming qualities whatsoever, and even ubiquity of the interpreter doesn't work so well when so much of the language's behavior is controlled server-wide. Everything it does is done better by other languages. Nobody has ever even proposed a counter-example to me."""

i (for shits and giggles) wrote a Python version of my directory tree explorer (original here: http://sonof.bandit.name/files/) and found that Python suffered a small problem: strings cant be more than a certain size... for oh say a base64 encoded bitmap. (i had 3 files: server.py, fserv.py and res.py. i wanted TOTALLY python. 

the step i took after that was to expunge all likeness to Python from my system... then reinstall. ActivePython gets around this, but only with a VERY crude hack.

Oh, and a worse templating language is Smarty. 

(and another thing: how is http://www.php.net/manual/en/function.mysql-query.php#74849 injection prone? )


----------



## net-cat (May 21, 2008)

indrora said:


> but PHP has 1 advantage over ASP.NET or any other server-side language that i have yet to find a comparator to: you can modify it and INSTANTLY see the results. its supported on EVERY single os. its small (i have an apache/php install thats about 5mb) and it doesnt suffer from Perl's libperl DLL hell. php is about as static as it gets until you throw extentions on.


Um. What?

No, seriously. What?

I'm pretty sure I've had both Python and Perl server-side environments working on any OS you'd care to imagine. (Windows, FreeBSD and Linux.) Python has pypi and setuptools and Perl has CPAN. All that either comes with the language or is a quick download.

We're rewriting FA in Python and I can definitely save it and have the changes reflected immediately.



indrora said:


> Python suffered a small problem: strings cant be more than a certain size... for oh say a base64 encoded bitmap.


How big was that file? I've stored 5MB PNG files in Python strings just fine.




indrora said:


> (and another thing: how is http://www.php.net/manual/en/function.mysql-query.php#74849 injection prone? )




```
selectonerow(array('*'), 'anytable', 'id', $_REQUEST['id']);
```


----------



## indrora (May 22, 2008)

a) i have a BASIC python installation that takes up 4mb. its big. i need something that uses less that 4kb (embedded ARM processor, 32k of memory, 12k of it is linux and csh) -- a comprable to my LitePHP install of 7kb memory and 2.3mb of disk space.
on Windows, my 8 line python webserver caches pages to save read time. on Linux the pages take about 2 seconds to be re-cached. on windows it takes some 20 seconds.
the code is as follows:

```
#--- Page Request
def onGetRequest(page):
     if(tf.CachedExists(page)):
       print(tf.getCachedPage(page))
     else
       tf.ServePage(page)
       tf.CachePage(page)
# --- End Page Request
```

secondly, the image was 4kb. 

third: I'm not a security expert so i didnt catch that.

Congratulations, you have bested me


----------



## net-cat (May 22, 2008)

Ah. Embedded programming is a whole different animal. One which Python is not well suited for. Perl and PHP are better for that. (The vast majority of my embedded programming has been in C and ASM.)


----------



## Eevee (May 22, 2008)

indrora said:


> ASP.NET is fucked. but PHP has 1 advantage over ASP.NET or any other server-side language that i have yet to find a comparator to: you can modify it and INSTANTLY see the results.


CGI



indrora said:


> its supported on EVERY single os.


I am not aware of a platform Perl does not support.  I would not be surprised to find out about one, but I'm willing to bet it would be pretty small.  Python has a respectable list too.

What does PHP run on?  From a look around the online docs I can only find mention of installation on UNIX and Windows.



indrora said:


> its small (i have an apache/php install thats about 5mb)


I haven't seen many attempts to compact Perl or Python, but I can guess how it would be done; toss Perl's lesser-used standard modules, remove the documentation, delete the inline documentation from the remaining modules and run them through Perl::Squish, etc.  You could probably also hack in some gzip support without much trouble and compress the standard modules.  The full core Perl binary on my machine is only 1MB, so I doubt it would be hard to shave a usable Perl down to a respectable size.  If you really need to, strip error messages, strict/warnings support, features you don't need, etc out of the binary itself.

I'm not sure why you would ever want this much overhead for embedded programming, though.



indrora said:


> and it doesnt suffer from Perl's libperl DLL hell.


I have never had DLL hell with either Perl or Python, you can always install old libraries locally to an app if you really need to with both, and Perl 6 has better module versioning built in.  Meanwhile, with PHP, you either have the latest version of some module built in or you don't.  Does PHP even have something like easy_install or CPAN.pm that will find, install, and update third-party modules for you?



indrora said:


> as for MySQL injection, thats all a security thing that the programmer should handle.


It is terribly easy but thoroughly irresponsible to solely blame the programmer for security problems.  Security is an *extremely serious* issue, and yet Zend has been glacially slow in bothering to fix any of the old security issues that plagued PHP.

I would like to stress that EVEN TODAY, THE PHP MANUAL RECOMMENDS HACKS LIKE PRINTF AND MYSQL_ESCAPE_STRING AND DOES NOT MENTION PREPARED STATEMENTS: http://us3.php.net/manual/en/security.database.sql-injection.php

SQL injection is a _trivial problem_ that was solved *years* ago with a minimum of cognitive overhead for the programmer, and yet it still plagues PHP apps.  Pretty much _exclusively_ PHP apps.  Despite the half-dozen half-assed protections PHP has against it.  I wonder why that is.



indrora said:


> i wrote a Python version of my directory tree explorer and found that Python suffered a small problem: strings cant be more than a certain size... for oh say a base64 encoded bitmap. (i had 3 files: server.py, fserv.py and res.py. i wanted TOTALLY python.


As far as I know, Python has no string size limit.  I've passed around large files contained in single strings with no problems.



indrora said:


> Oh, and a worse templating language is Smarty.


Some PHP software is worse than PHP core.  Astounding.



indrora said:


> (and another thing: how is http://www.php.net/manual/en/function.mysql-query.php#74849 injection prone? )


I am absolutely appalled that (a) this is suggested in PHP comments and (b) you don't see the problem -- what happened to security being the programmer's responsibility?.  This is exactly what I'm talking about.

Sucks for you if that unique value comes from $_GET and happens to be, say:

```
'; DROP DATABASE phpbb211; SELECT * FROM users where id='1
```

"Not a security expert" isn't an excuse.  If you're writing _any_ code that takes _any_ input from the wild, you should be constantly considering security issues.


----------



## indrora (May 22, 2008)

*slams head into table* you realize we've gone so off topic i'm ready to say "EACH TO HIS OWN!" and explode.

and eevee, you seem to be the kind of person i've been looking for. Get at another directory on the filesystem with my fs browser (sonof.bandit.name/files/) that is BELOW /files/ -- i dare you.

really, to get this rubling train back on topic, its like food. Each to his own preference. play around with whatever you can get your hands on, and if you find something you become proficient in, be it PHP, Bash, Csh, MySql's nasty query syntax, or even if you find Perl's (imnsho) esoteric packaging and classing methods interesting, go for it. find an editor you like though. Be it Emacs, Vim, Komodo Edit, Metapad, Notepad++, JATE, Jarte, MixedEdit, BBEdit or whatever. just be comfortable with it.


----------



## Aurali (May 22, 2008)

since you two started arguing.. I've taught 3 people enough c++ to get them by on most non graphic apps, and one person enough perl to make a simple website :3.

php is messed up, but it's the standard.. 
that's all I gotta say on this subject :3


----------



## Eevee (May 22, 2008)

indrora said:


> *slams head into table* you realize we've gone so off topic i'm ready to say "EACH TO HIS OWN!" and explode.


My criticisms are not the realm of "to each his own"; they are real, serious problems in PHP with real serious effects on the world.  When I just don't like a language, I freely admit it: I plain don't like Java for assorted reasons, but it has its place (even if I've yet to find it 8)).  PHP is just bad.



indrora said:


> and eevee, you seem to be the kind of person i've been looking for. Get at another directory on the filesystem with my fs browser (sonof.bandit.name/files/) that is BELOW /files/ -- i dare you.


I think you mean above  :V  And there are really only two attack vectors there, both covered.  Well, not counting HTML injection.



indrora said:


> if you find something you become proficient in, be it PHP, Bash, Csh, MySql's nasty query syntax, ... go for it.


No.  Whether you like it or not, someday the rest of us will have to use or maintain your code, and we would appreciate it if it were as uncrappy as possible.  One of the big problems with programming-land at the moment is that a lot of people learn to use a single tool, then decide that all problems are best solved by this tool.  More people need to be language nerds..

Nobody codes in a vacuum.  Nobody relevant to this discussion, anyway.



indrora said:


> or even if you find Perl's (imnsho) esoteric packaging and classing methods interesting


It is no secret that Perl's OO model is essentially a very clever backwards-compatible hack on top of a language not originally designed to support it.  There are counter-hacks available from CPAN (Moose, for example, is an excellent compromise between Perl 5 and Perl 6's OO), although the standard hashref-based implementation is simple enough that most people don't seem to bother.



Eli said:


> since you two started arguing.. I've taught 3 people enough c++ to get them by on most non graphic apps, and one person enough perl to make a simple website :3.


Congratulations, but teaching a language is not the same as teaching programming.

And, uh, "enough Perl to make a simple website" consists of a shebang and print...



Eli said:


> php is messed up, but it's the standard..


No, it's not, and there is nothing requiring that it be so anyway.  Sitting around lamenting does not tend to change minds, so I try to explain the problems with PHP whenever the opportunity arises.


----------



## Aurali (May 22, 2008)

Eevee said:


> No, it's not, and there is nothing requiring that it be so anyway.  Sitting around lamenting does not tend to change minds, so I try to explain the problems with PHP whenever the opportunity arises.



bah.. everything I've seen, and all the job opportunities are for php.. in the web world anyway..


----------



## verix (May 22, 2008)

Eli said:


> bah.. everything I've seen, and all the job opportunities are for php.. in the web world anyway..


It's popular, it's not a standard. It's popular because it's supposedly easy. You can do simple scripts with it, but then it starts getting annoying and complicated when you try to do more complex things with it.

PHP says it applies to the KISS principle, yet it falls flat on its face when also attempting complex things (like its horrendoulsy comedic attempt at Lamba/Anonymous functions).

Its simplicity also teaches bad programming practices, too.

PS: I hope you taught whoever you taught C++ about "new" and "delete," because calling new without delete can cause pretty hilarious problems.


----------



## Aurali (May 22, 2008)

verix said:


> It's popular, it's not a standard. It's popular because it's supposedly easy. You can do simple scripts with it, but then it starts getting annoying and complicated when you try to do more complex things with it.


that's like saying Photoshop isn't the standard..  0.o; I'm not entirely fluent in PHP, and I won't be hired by anyone because of that.. I /can/ get an apprenticeship, but I'd rather stick with my programmers job.. actually get money.



> Its simplicity also teaches bad programming practices, too.
> 
> PS: I hope you taught whoever you taught C++ about "new" and "delete," because calling new without delete can cause pretty hilarious problems.


 I'm so glad you didn't quote the word taught.. :3  I didn't teach any memory allocation yet... just enough to make semi-simple applications.


----------



## verix (May 22, 2008)

Eli said:


> that's like saying Photoshop isn't the standard..  0.o; I'm not entirely fluent in PHP, and I won't be hired by anyone because of that.. I /can/ get an apprenticeship, but I'd rather stick with my programmers job.. actually get money.


Photoshop falls into the same category, though. It's popular, but not a standard. A standard is something like HTML, which has a finite set of rules in which multiple programs can interface. The Photoshop format is a standard, but not the program itself. After all, you can use any program you want to make graphics, Photoshop is just the most popular pick.

Semantic, but that's how I am sometimes.


----------



## Aurali (May 22, 2008)

verix said:


> Photoshop falls into the same category, though. It's popular, but not a standard. A standard is something like HTML, which has a finite set of rules in which multiple programs can interface. The Photoshop format is a standard, but not the program itself. After all, you can use any program you want to make graphics, Photoshop is just the most popular pick.
> 
> Semantic, but that's how I am sometimes.



KISS <..<


----------



## indrora (May 24, 2008)

*smirks* Postscript is a standard... XML is a standard... Firefox is not a standard. its a tool a standard and widely accepted tool. Photoshop is not a standard, it is a standardly accepted as the best. the OpenCanvas OCI file format is NOT a standard. Standards are open.


----------



## Aurali (May 24, 2008)

nawr.. if anything That would be IE :3

and firefox is open.. 0.o;


----------

