Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

General Discussion

Feedback / Question About Applications

Okay so I've noticed that over the course of JavaScript, Python, and C# courses all the applications that they seem to make are all console based. Now to me console applications seem to have little to no use in practical scenarios and I heard them mention in the C# course that its very rare that people actually use console applications and that they're only making it in the course for learning purposes. Where or how do you learn how to make actual applications that have visuals, buttons, and images that isn't web-based. I feel that learning how to make a real application would be better for learning then console applications. I find it almost frustrating that I cannot find a single course where they teach you how to make a traditional style of application with programming languages that you would find on the windows or app store. When its solely console applications it makes me think that the language itself serves little purpose and it's only utilization is taking in an input, doing something to that input, and printing the output to the screen. How do you learn to make "real" applications?

Dave StSomeWhere
Dave StSomeWhere
19,870 Points

What do you mean by "traditional style of application". Can you mention a app or two as an example of what you are looking to develop.

I agree and am also interested in creating something and knowing how to implement it on windowns, mac and linux via an install script.

One example that comes to mind for me is greenshot (a great screen shot tool) even though it is windows only.

Also, maybe how to create an Ubuntu repository and add items into the software center.

Got me rambling, so thanks, I'll be interested to see what kind of responses there are and if there is a learning environment outside the the brower based world.

I don't really have a specific app in mind although the type I'm thinking of would be a video game app such as something like "Angry Birds"(Ancient History I know) and non-game apps like a planner on your phone(No specific apps come to mind about this). Like you said I'm interested if there is going to be a "learning environment outside the browser-based world" so far all the console apps and web-based ones are becoming repetitive. Maybe in the future there should be a course that's got the same style as "How to build a Website" (Building it completely from scratch) except it teaches you how to build a non browser based app.

Dave StSomeWhere
Dave StSomeWhere
19,870 Points

Oh, you're looking for phone apps - have you checked out Android or iOS courses - are they not offering what you're looking for - I haven't gotten to them yet...

I was wondering about phone apps as well but I also meant traditional apps that you would install off the internet as an exe file and run on your computer to install as well.

2 Answers

andren
andren
28,558 Points

Taking an input, processing it and then outputting it somewhere is the essence of all programming languages in existence, the only difference between a console application and the types of applications you are used to is where that input comes from and how it is displayed. The backend code to process that information will be pretty similar either way.

The term you are looking for is GUI (Graphical user interface) programming, and it is something that is possible in pretty much any language, though the frameworks and supported platforms will differ between languages.

For C# the most common GUI Frameworks are WinForms and WPF, it is worth noting that they are both designed exclusively for Windows at the moment. They are one of the few GUI frameworks available that has a pretty robust "GUI Designer" available that allows you to design GUIs without using much code, which is built into Visual Studio. Cross platform GUI development in C# while not impossible is not quite something I would recommend at the moment. Though if you are interested Xamarin is probably what you should be looking at.

For Python there are a myriad of GUI frameworks available, you can find a list here. TkInter is a cross platform framework that ships with Python so that tends to be pretty popular (Treehouse has a workshop dedicated to it). PyQt which allows you to make use of a cross platform GUI framework called Qt (This is another GUI framework that has a decent "GUI Designer" available for it) is also pretty popular.

For JavaScript it's hard to get completely away from webbased solutions since it was fundamentally designed to be a web language, however with a framework like Electron you can essentially turn a webapp into an application that runs from a local file and have similar abilities to a traditional application.

If you are interested in programming for phones then both Android and iOS have pretty robust GUI Designers built into their IDE of choice which are pretty easy to use. Android Studio for Android and Xcode for iOS. Phones don't generally use console applications at all so pretty mucn any course on phone development (including those on Treehouse) will show you how to design a GUI to go with your program.

To be honest I think part of the reason Treehouse does not have many GUI centered courses is that programming a GUI is in many cases quite complicated and it distracts from the backend code and core concepts of the languages which is fundamental to know regardless of the type of application you are building. Those concepts tend to be a lot easier to pick up in a simple type of application like a console program. And while console apps aren't great for client facing applications they are far from useless. They have the power to do anything a GUI app can, they are just more cumbersome to use. As such they are more commonly found in enterprises and the like where they are setup to run automatically or to be used only by select trained employees.

There are plenty of courses and tutorials for most of the frameworks I mentioned out there on the web, some video based some text based. I have a feeling Treehouse would not be super happy if I started linking to tons of competing course platforms so I'll leave finding them up to you, but it shouldn't be too difficult.

In general you just have to google for "language GUI programming" (where you replace language with your language of choice) and you'll find plenty of info about what frameworks are common and popular in that language. From there you can search for courses and tutorials specifically for one of those frameworks.

Edit: Added paragraph dedicated to phone app development.

Thanks for the answer. So GUI essentially adds the visual aspect of the program in non-web based way?

andren
andren
28,558 Points

Yes, GUI refers to the graphical interface of the application, or put more simply the window and everything within it that opens up when you run an application.

Most GUIs are non-web based, but not exclusively. You have Electron apps like I mentioned above for example. If you take a look at apps like Visual Studio Code and Atom you would likely think they are traditional GUI apps as they run from a local file and act pretty much how you would expect a normal app to behave. But technically speaking they are webapps (they are written in HTML, CSS and JavaScript) electron just makes it possible to bundle up webapps into executable files that behave more like traditional applications.

Steven Parker
Steven Parker
229,645 Points

I know Treehouse has a focus on web technologies, I've seen staff mention it from time to time. That probably explains why they don't cover app GUI's. There used to be an entire series of courses about (non-web) game development, but recently that entire topic group was retired.