How Linux programmers create GUI application without using IDE? [closed] - linux

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
I have read some comments in some forums saying that Linux programmers usually do not use any IDE. They prefer to use Vim and Emacs to do their programming.
If I'm not mistaken, Vim and Emacs are just text editors, similar to notepad, but with syntax highlighting.
I just want to know how Linux programmers create complicated GUI application without using any IDE.
Thanks.

You can create gui just from source code (for example: http://library.gnome.org/devel/gtk-tutorial/2.17/c39.html#SEC-HELLOWORLD). Alternatively, you can use stand-alone GUI designers (for example, Glade for GTK+ and Qt Designer for Qt) to design GUIs and use them from application written in Vim or Emacs (or anything else).

You are making a big assumption - that most Linux developers are developing GUI applications.
Many developers that follow the unix philosophy create text based applications (for example, see the git, the source control management system).
When creating a GUI for Linux, some developers will use text files and some will use designers to help with it.
One way or another, the GUI is also defined in text files. These are either generated by a designer or written by a programmer. It makes little difference to the compiler.

If you really want to understand how this works, read the tutorials for any of the GUI tool kits. You write code that uses a library to build a GUI. For a great example install python and the wxPython and its demo. The demo provides runnable sample programs for every GUI widget in a great format - one tab shows the UI and the other shows the code. The GUI is created from the code, unlike some environment where you drag controls and the code is created for you.
There are of course NxM ways to do this, where N is the number of toolkits and M is the number of languages. I just pointed out that the wxPython combination has great examples. I've also done a little GTK with Pyhon and the online docs are good too. Examples can be found in other languages of course.

Emacs and Vim are IDEs--integrated development environments, which means they assemble a variety of programs related to writing programs into one place. The part you are conflating with an IDE is a component of some IDEs called a form/gui layout designer. I am not sure what Visual studio calls it. These designers programs, often integrated into an IDE like Visual Studio, allow you to visually arrange GUI elements.
However, designers help you design GUIs only for specific frameworks. In Windows, Visual Studio allows you to arrange Windows Forms in .NET. GTK, another GUI framework popular on Linux, has its own stand alone designer. Qt also has a (very nice) designer. Netbeans has a Java Swing form designer.
The key point is: all that these designers ultimately do is automatically generate some code that you could otherwise write by hand in a text editor.

Related

How to create Flash animations / movies on Linux? [closed]

Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 10 years ago.
Improve this question
This is more of an assignment work. I'm trying to help a friend debugging his Flash animation. Now, when I'm at his place and at his MacBook, he's using Adobe Flash to create his animation, with those timelines, the AS3 editor, etc.
Now, I want to help him while I'm at home, but I don't have a Windows or Mac computer, and I don't have a Flash license (he's got his from the school he's going to).
I know about osflash.org, but can I work the same way as he does in Flash? I need those timelines, and obviously I need to compile and preview the .swf files.
I should explain, I've never worked with Flash before, and the IDE is quite weird to me. The only way I help him, is by providing general programming skills (since AS3 is just another OO language). I was thinking of installing a cracked Flash version in a Windows VM, but that's not how I'd like to work.
Is there a better solution to this?
He's doing his work in AS3, as I mentioned.
Since you are not much familiar with the flash IDE you should be not at problem. Since the only problem with linux & flash developers is lack of decent IDE.
AS3 programs can be compiled with the flex SDK. So you simply need to download the SDK for your linux ditribution. However do note that there are no timelines in case when you develop applications with code. Instead you work with Timer events.
Flash IDE actually hides the Timer implementation in a easy usable (neat) way to provide anyone to create an application quickly.
FLA is a proprietary format for Flash CS and earlier files. No, you cannot use them with Flex compiler, because the later is an OOS software. But you can tell your friend to avoid using them. It is in fact very common to use them only to generate graphic assets, but not the code. The typical workflow is to compile SWC or SWF to use as a library and to write the code in another editor.
Anyways, some practical things:
Developing AS3 proper, you can use Intellij IDEA (some people even like it and use on other OS then Linux, to be honest, I'm not a big fan of it, but it is of the same quality as the most industry-standard level IDEs)
Your another option (which I'm using) Some good soul "ported" Flash Builder for Linux (Flash Builder is originally an Eclipse plugin developed by Adobe). It's story on Linux is fogged by a mire of inconsequential decisions. Once there was a trial version, but Adobe never released it for Linux. The trial expired, then Adobe granted continuation for the trial version. Later, they seemed to abandon the product entirely. I'm not sure of its current status, but you can find it here: https://code.google.com/p/fb4linux/
Your another option, absolutely legal, but problematic: FlashDevelop, it runs considerably well in virtualization and the devs made an effort to ensure the best they can that the virtualized version runs fine. It also runs (to an extend...) under Wine. I tried the later, but I tried it a lot time ago, it was far from being perfect, but it was workable. Here's the thread at FD forum on this: http://flashdevelop.org/community/viewtopic.php?f=9&t=7621
FDT (from Powerflashers, a commercial IDE based on Eclipse) is said to run on Linux - never tried.
What I also used: Emacs with actionscrip-mode - it is barely a syntax highlighter. While using it I added some functions to run the compiler and debugger, but they are too crappy to share them :) seriously. So I won't.
More options:
Haxe, is another language that compiles to SWF. Less well-known, but considerably more advanced and more modern language. Besides compiling to Flash does a whole bunch of other things. I've seen it used inside MonoDevelop http://haxe.org/com/ide/monodevelop (haven't used myself). Similarly, it should be possible to use it inside FDT.
Haxe mode for Emacs (I'm currently trying to improve it, but it's not there yet), hopefully, in a couple of month it will be. Here's what I've gotten for now: https://code.google.com/p/haxe-mode/
Graphics:
It seems unlikely that you can find an editor matched to Flash CS in terms of editing vector graphics for Flash, but MXMLC (Flex compiler) can fairly well compile SVG. You can thus use Inkscape to produce some non-animated graphics... but YMMV

Wish to learn a new programming language [closed]

Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 11 years ago.
Improve this question
I wish to learn a new programming language but there are so many out there! So thought I'd ask here if there are any that correspond with what I wrote in this list that you might know of:
Making applications with GUI
That would preferably run on any system, preferably Windows (I run Windows 7)
That would not need a hardcore IDE and hopefully no compiling
That is not incredibly advanced (Hard syntax paired with OOP etc.)
That does not need any 'platform' or 'component' installed to work (can be opened with a click, say an .exe file or any other file type)
I already know:
HTML, JavaScript and PHP
Thanks in advance for your input.
I'd recommend Python to anyone.
You seem to have some mutually exclusive options here.
For example, no compiling and opening an .exe. An exe file is generated via compilation.
IMHO, Qt probably best suits your needs. It runs on just about everything, doesn't need an IDE (though qtcreator is a fantastic one, I suggest trying it before you choose not to use an IDE) and is easy to learn and well documented.
If you want compile-less then you'll need to use the python or other scripting language bindings too it.
I would suggest C-sharp / F-sharp combination with WPF thrown into that to get GUI's going...
It a pretty rough learning curve but the combinations are endless...
A couple things to certainly look into:
PRISM
M-V-VM ( Model , View, Viewmodel)
If you are interested in an other back-end persistancy try going into object databases, such a great new world opened up for me when I discovered all the things you can do with that... ( DB4O is my preferred one at this moment.. it has loads of info and a very active community )
It is only limited by your imagination ;)
This is one of those questions of having 10000 people going to an Ice cream shop and then choosing which flavour they want. So far I have worked with Delphi and C#, I am doing SQL, Asp.net and javascript, well, basically!
The answer should be somewhat simple. Go check out which programming language fits your needs, and is in great demand in the working world. If you want to program websites for companies, then PHP, ASP.NET and the older HTML is for you. As far as I know, flash is also coding.#
Another way to look at this question is not only the availability of the language you seek, but its future, if it will become obsolete or the coding language of the century.All coding is the same, but some are more rigorous in certain tasks (like C# and delphi are good languages to build forms applications to handle tasks for data manipulation, integration and whatnot.)
The answer to this question is to explore! What is Your flavour? Sitting in front of a desk doing CRUD operations and staring into a gui which has countless buttons and textb
oxes, but real in-depth code, or to start into a rich gui with XML based code?
I recommend HTML5+Javascript.
You can use Canvas or SVG for
graphic.
It works depending on the browser. So
any OS or system can use it.
Javascript and HTML can be edited in
any thing for example: notepad.
You can write your JS using OOP.
How to open a HTML file? just
double-click on it.
Have fun :)

Any alternatives to Eclipse? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
I'm a long-term Linux developer, and I've been using Eclipse to do all my coding for years. It's got decent syntax highlighting for a range of languages, good project management, top-notch integrated VCS support, and its Java support is superb.
Unfortunately it's also huge, rather clunky, and has a number of bad habits ranging from files disappearing irrevocably if you accidentally undo in the project view after creating a file, to mysterious lockups where it will sit and think at 100% CPU for a minute, to an extremely clumsy package manager that seems to become more and more fragile the more stuff you install with it. So I'm looking for suggestions to an alternative to Eclipse that I can try.
There are, however, some provisos.
There are two main styles of IDE. There's the Eclipse style, where a project is a directory; moving files in the project moves the files in the directory, so the project view can be treated as a file manager. And then there's the Visual Studio style, where the project is an abstract thing that does not necessarily match the layout on disk, and a project can contain files from multiple directories and moving files in the project doesn't touch the disk. This latter style I cannot stand, as it simply doesn't match the way I work. Unfortunately most Linux IDEs I've found work like Visual Studio. e.g. qtcreator, netbeans, monodevelop, etc.
I must be able to create a raw, unmanaged project, where the IDE doesn't try to build stuff, debug stuff, or touch the files in any way other than just editing them and managing them. This is because most of my stuff tends to get built from the command line. For example, Code::Blocks, which otherwise looks excellent, insists on all projects having a managed build system with build configurations etc, and won't take no for an answer, even if said build system is totally irrelevant to what I want to do. Integrated build systems are all very well but if I can't just point the IDE at a directory full of files and edit them, I'm afraid it's useless to me.
The languages I work in are C, C++, Java, Lua, shell script, Vala, and a myriad of other things, so something with decently robust syntax highlighting would be nice.
I realise that I'm being quite picky, but IDEs are a very personal thing, and, well, that's how I work. I don't dislike Eclipse enough to warrant changing my workflow, but I would like to know if there's something better out there that I can use with the same workflow...
I'm not really a very experienced programmer, I only have about 3 years of experience, but during those three years I have become completely disappointed with every IDE that I used.
I tried Visual Studio, Eclipse, NetBeans, IntelliJ IDEA (that was the most horrible of them, probably), Qt Creator (this one was the nicest, for Qt projects). All of them were too slow, clunky, too "intrusive", had a lot of features I didn't even need and using them was a real pain. So here is what I did.
I uninstalled all those IDE's, installed the good old gvim text editor, downloaded a nice color scheme for it, installed a good font for programmers (terminus), installed a few nice vim plugins, learned the VIM commands, learned how to use my tools (GNU make, g++, cvs, git etc.) and lived happily ever after.
The advantage of Vim is that it's lightweight, does not hog up your system's resources, does not tell you what to do, yet it is powerful enough to be one of the best text editors out there.
However, if you find Vim hard to grok, I suggest that you try Geany, a lightweight text editor for programmers. Also, I have recetly checked out Code::Blocks and it seems close enough to be good. It's not good for Java development, though, but for C++ it's decent. So, you know, pick your poison :)
How about JEdit?
I highly recommend Intellij Idea. As of about a year ago they've got a free Community Edition.
Since you are using Linux why not use xemacs (http://www.xemacs.org/)
To get an idea how to set it up for various languages you can look at this:
http://www.xemacs.org/Documentation/packages/html/prog-modes.html
Then for Java, you can look at http://jdee.sourceforge.net/
Emacs is very flexible, so you can get it to work as you desire, but, it will require more effort on your part that using a standard IDE, such as Eclipse.
When I don't want to wait for Eclipse to load I just use gedit - it's fast and has syntax highlighting.
You can open the sidebar to jump between open files or use the file browser and the bottom panel has a terminal to make in. If you use the External Tools Manager you can add custom scripts to be run by any shortcut key combination.

What's the most cross-platform friendly coding language? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 3 years ago.
Improve this question
Let's say I want to create FPS game, let's say clone Crysis so everybody understand what type of graphics & performance I'm after. What's the best code to write this game with so it's as easy as possible to port it to all the common platforms? Of course I want the application to feel and be native to the platform. This also means that it should be easy to take advantage of Snow Leopard's new features like OpenCL and Windows 7's new features. I realize that GUI has the written separately for different platforms and that's not a problem.
So my question is that what's the best language for the job. I'm not looking for one-for-all solution but more like language for the core. I guess one way to put it is to say that what's the best language if you need to port the same program to Windows, OS X & Linux? Java is out of the question.
C (and now for some padding to reach 15 chars)
Have you ever seen the Blues Brothers? In the movie, Jake and Elwood go into a hick bar to do a gig and ask what sort of music they like, to which the woman behind the bar answers:
We have both kinds: country AND
western.
What has this got to do with this question? Well, you want to create high performance 3D graphics and you're asking what language to use?
We have both kinds: C and C++.
You probably want C for your lower level graphics performance, either the variant of C89 that Visual C++ supports, or use MinGW and gcc C99 ( VC++ 2008 doesn't support declarations in for loops in C99 code, which is very annoying, but then they didn't do that right in C++ for years ).
Admittedly, if you're taking GNU with you and running full-screen with your own GUI then it's not really cross platform any more.
You also probably want either Lua or Python or another scripting language which plays well with calling C to give a sensible higher level way of controlling the game.
C++. You can avoid millions of "if #define"'s for platform dependent things and instead use inheritance (derived classes for each platform and client using/knowing the abstract base class). A few exceptions to this can be made for the performance critical parts.
There are also lots of libraries for cross-platform development.
I really recommend using Lua for any scripting. It is an ANSI C library so that means that a: it can be compiled in (at least most) C++ compilers, and: if there's a C compiler for the platform then you can use lua. It allows for significant extension of flexibility of your game and if you want it will let your players customize it too!
Java is probably one of the easiest to learn, personally. Java though doesn't have have that great of a graphical system, it needs more code to support the graphical display if you are coding "GAMES," if you're going to code a website though choose JavaScript, CSS, and HTML/5. Or use only one of these languages normally best to choose two that best fit your comforts... =) For an FPS, I would recommend for beginners to use Java, if you have a good sense in what you want to create and it is a more complex game then use C# or C++, just because it uses less hardware if you want to make more complex games to run on multi platform.
Whatever you use you're going to have to write platform-specific code. Languages like Java or other interpreted languages (Python be my personal preference) are going to allow you to use a lot of commonalities. However, since it's not a quick and simple project, I'd suggest </intelligent-looking-padding> C or C++.
Edit: GUI doesn't necessarily have to be written from scratch for every platform. Check wxWidgets.
Most cross platform games are written in C++, because it is very good - performance wise; and its more user friendly than C. Games need maximum speed & efficiency!
You can hide away platform specific stuff behind certain abstractions and API's that you write so that you can port it easily. You can also use a cross platform framework such as Qt or wxWidgets for the window & GUI elements. Adding a scripting language to non critical parts is also nice. :)
As most have noted here, you are almost certainly going to need C/C++ for your graphics in the end particularly for your high performance (graphics) requirements.
However there might be an opportunity to develop the "core" as you call it, in a scripting language which in turn is easy to embed within a C/C++ application. In which case, the top 2 scripting languages to look into would be Lua and Tcl.
Lua in particular is used in WoW among others I'm sure. Tcl on the other hand has more "batteries included" (libraries).
I'd recommend C++ for large cross-platform projects as well. But I think what's also important are the build-tools you use. For example SCons or CMake can create project files/makefiles for most compilers under Windows/Linux/MacOS.
C is a good language, but generally you want an object oriented language for programming game. If your looking for speed, go with C++, but if you don't have much programming experience, go with python. look into the sfml and pygame libraries.

What's so great about TextMate? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 4 years ago.
Improve this question
Almost every developer that uses a Mac practically worships TextMate. Why? What extraordinary features does it have that other text editors and IDEs don't? I did a quick search and the only really useful feature that I found that most other editors lack is the column selection option, but I wouldn't use a certain editor just for that. What makes TextMate so amazing?
TextMate was the first app I bought when I switched to the Mac a few years ago.
The features I like most are:
bundle support
clean UI
project support
shell integration
fast for small files (fast startup time)
HTMLTidy built in
CSS and XHTML validation integrated (needs online connection)
but it also has some drawbacks:
slow for big files
lack of updates (for some time now, but TextMate 2.0 seems to be alive)
The main selling point is the ability to extend the UI using bundles, which are basically just shell scripts. It is also fairly lightweight.
I think the appeal of TextMate is that its not bloated ... its has just the right mix of text editing / IDE features, implemented in just the right way :)
A lot of editors have column selections (although in a lot of them its buried deep down). The actual fact TextMate is liked is it's bundle system, which makes some repetitive programming tasks much easier. It's not considered a replacement for languages that have IDE-s with "intellisense" support (Java, C#, etc.), but it's really useful if you want to create programs in a scripting language like ruby or python.
TextMate is very powerful and at the same time usable, intuitive, elegant and lightweight.
On the other hand e.g. the two most popular Unix editors Emacs and Vi(m) are both very powerful but IMHO(!) their usability is not up to todays standards. (I use all three of them but think TextMate is by far the best.)
I've been trying to use TextMate as a replacement for Emacs. So far I'm not sold, though I like projects, simpler/cleaner UI, and the idea that it's extensible using python, etc. (I've never mastered elisp).
Things I don't like [in comparison to Emacs]:
no ability to swap point/mark or return to previous marks.
movement keys don't automatically take you out of inline search.
tags not so great (ex: no symbols can be found in java files without classes).
completion only searches current file.
NOT OPEN SOURCE.
Okay, I still want to give it a fair shot, but mostly I'm just missing Emacs' superior functionality and feeling increasingly forgiving of its challenging UI and more willing to try to learn elisp for real. Even for projects, using emacs desktop-save in a project folder can accomplish nearly the same thing.
-taranaki
Textmate basically has all the power of <insert your favorite unix editor here> with a nice Mac OS X UI wrapped around it and a great plugin system using bundles, of which hundreds are available and most are either good or awesome.
Community support.

Resources