They have a tool to design DSLs: https://www.jetbrains.com/mps/
Is it possible to embed editor from there into my program? Or the only purpose is to use it during development only (to compile from DSL)?
In principal, since the MPS editor is a Java Swing application, it could be embedded, however, the current wiring makes it not a trivial process. It is definitely off the beaten path.
The preferred way to create single-purpose IDEs around your DSLs is to build a standalone IDE, which leverages the IntelliJ platform and bundles the desired DSLs - https://confluence.jetbrains.com/display/MPSD34/Building+standalone+IDEs+for+your+languages
Related
There are lots of questions here about IDEs vs. editors and which is better for modern software development. In the answers a usual point is that Eclipse has much better language support e.g. for Java and that other editors lag behind in this respect.
Which brings the qeustion: why play catch up at all? Eclipse will always have more development resources, so it would make more sense to simply use the code Eclipse has. It could be separated from the Eclipse UI and it could be run in a separate process with which Emacs, Vim and other editors simply talk to when they need information, want to perform intelligent code completion or do some refactoring.
Is there an existing project which attempts to do this? It would be the best of the both worlds: one could use the editor to which one's accustomed to and at the same time the powerful language support provided by Eclipse would also be available.
As a vim lover I can't speak for emacs. Regarding vim, as far as I know, the only good project that combines eclipse and vim is eclim. But, considering my background ( I'm a ruby developer with a long Java experience) I would not recommend Vim for Java development. Eclipse is very good for Java and I don't like hybrid solutions. The real point is related to teams. It's very difficult to find Java developers that can use Vim in a working environment. So, when I had to choose the tools for a project, I chose Eclipse for Java. If your needs are personal maybe you could do different considerations and would go for eclim.
Are there any good OOP languages that you can use on Linux? Obviously Java comes to mind, even running C# under mono.
Looking for a language that can be used for all round development, web dev, desktop, services etc.
Besides Mono C# and Java anything else come to mind?
Python seems to be the obvious choice. There a lot of great web frameworks for it, strong support for development of GTK desktop apps and many others. Ruby should also be mentioned, although it's not usually used for desktop apps.
Don't forget other languages running on top of the JVM either - most notably Scala, Clojure and Groovy.
Vala and D are new and interesting languages with some quality tools available. Vala was primarily designed to work smoothly in GNOME environment.
All of them. Whatever you want to use on Linux, you can.
Linux developent is a lot of things. For GUI application programming, you're most likely to want to program for one of the two big desktop environments, GNOME and KDE, or directly to the widget libraries that they are built on, GTK+ and Qt.
GTK+ is at its root a C library with object orientation being implemented as a set of conventions, very simply explained. However, many now program GTK+ and GNOME using true OOP languages like C++, C# using Mono (some very popular and default GNOME applications are built on Mono).
Another very interesting language for GTK+/GNOME is Vala, which is made to look and behave like C#, but which compiles to idiomatic GTK-using C, so all the GTK+ OOP conventions are lifted up to be part of the Vala language.
KDE and Qt are basically C++ libraries, but these also have bindings to other languages.
Both environments have good Python bindings.
You can still use C# with the Mono project.
Python and Ruby are probably the most logical choice for all-round development. PHP is also great for web development.
Interesting how as soon as Java gets ruled out as an answer that we go straight for dynamic languages.
I'd still suggest using Java as a lot of your C# knowledge will apply with subtle differences in convention.
For the compiled type of app how about Freepascal.
Multi-platform and pretty easy to get the hang of for a C#/Java developer I would have thought. Can do web, desktop, client-server etc etc. And free (as the name implies!). Plus, it's based on Pascal (obviously) so it's well tried and tested and not one of the 'languages du jour' :-)
Give a try to the Free Pascal and Lazarus IDE.
You are getting support for multiple platforms, not only Linux. You write code once and compile it everywhere and you have a quite nice IDE which will speed up your development process.
Take a look at screenshots
TIP: When using Lazarus try the last daily snapshot instead of stable release. Snapshots are much more up to date with bugfixes \ features.
Consider C++ with Boost.org. Boost is always coming out with new releases and it's all open source. Linux and C++ have a very long history and there are plenty of stable tools. Once you know C++, many new worlds seem to open up. There are several good IDE's as well. I like code::blocks.
I started using Linux for PHP web development. What is a helpful toolset to use for web development (mostly PHP) available for the Linux platform. My Current IDE is netbeans and I am happy with it.
In no particular order, my perfect environment consists of:
vim - text editing
git - version control
screen - terminal management
This is all you really need to build a great app in any language, for that matter (baseline). Every language has its specifics, but the above will more than get you started.
The PDT project provides a PHP
Development Tools framework for the
Eclipse platform. This project
encompasses all development components
necessary to develop PHP and
facilitate extensibility. It leverages
the existing Web Tools Platform (WTP)
and Dynamic Languages Toolkit (DLTK)
in providing developers with PHP
capabilities.
You can have a try for eclipse.
http://www.eclipse.org/pdt/
Another one not mentioned in this thread (suitable for PHP and a lot of other dynamic languages):
Komodo Edit (free version of the Komodo IDE)
I really like using Netbeans and SqlSquirrel. Both of these tools are written in Java and they are cross platform compatible. Also an odd note about SqlSquirrel: It uses the Netbeans editor. Also, if you like there are many tutorials and articles on using PHP with Netbeans on their site. Overall, go with the toolset that you like the most. There isn't a single toolset that works with everyone, and for all problems.
I like Eclipse PDT, and it can be used both on Windows (which I use at work) and on Linux (which I use at home).
Features are quite the same as netbeans, I'd say ; especially, you've got nice stuff like graphical debugging, when used with Xdebug.
I'd say that, these days, when it comes to a modern full-IDE for PHP, that works on Linux, and is free, there are two choices : netbeans and Eclipse PDT. Which one you prefer is generally a matter of taste, as far as I can tell.
If you're happy with NetBeans, stick to that as you IDE. Learn to use Vim or emacs just for common knowledge. Use version control, Subversion and git are good choices.
The power of linux is in the command line. Whatever you do outside the IDE, learn to do it with command line. After a while you'll be comfortable with it and you'll discover that there's bunch of stuff you never want to do with GUIs anymore :)
When I used to write test tools in Windows, I use MFC for creating the front-end GUI. This made development of GUI development very fast, and I always used to concentrate on the back-end. Recently I moved to the console based Linux-world. Where most of the things are just console based.
My question: Is there any easy to use equivalent of MFC in Linux?
If you are used to MFC, you will LOVE QT.
http://www.qtsoftware.com/products/
There are a lot of alternatives.
I like wxWidgets. Others will recommend Qt.
Another option is to use Glade to build GTK+ or GNOME applications.
I've never used MFC, but supposedly the wxWidgets toolkit is somewhat MFC-like. Though I prefer Qt over wxWidgets as IMHO the API is nicer, more complete and better documented, and the Qt GUI builder is pretty good.
A nice thing with both Qt and wxWidgets BTW is that they are both cross-platform toolkits; they work on Linux/Unix, Windows, OS X, and maybe other platforms as well.
There's a a huge omission here! gtkmm, the official C++ binding to GTK+, is arguably the modern C++ GUI kit, since it goes out of its way to really use and evolve with the language. For those learning modern C++, it's the best counterpart to the stdlib. It grabbed and kept my interest, where no other GUI lib could, due to its modern and clear API. And it'll work wherever GTK+ does - a tonne of places. I'm glad to have built my first ever (and not trivial!) GUI project around it. It also provides sigc++, which I imagine is really powerful for custom signalling/event systems. Disclaimer: I'm just a self-taught user.
I've never developed Flash before but I have a project where I want to use an ActionScript 3 library and I'm not sure what tools I need to start. To further complicate things my main development box is an Ubuntu box. Are there any necessary packages I need to install? Or any .deb's I can buy?
A Windows or Mac box. :-)
just kidding, actually you can use the Flex 3 SDK mentioned above and compile using the CLI. If these AS3 Libraries are indeed Flex libraries (sometimes there are discrepancies between what works in Flex, what works in CS3, and what works in both) then you should be able to import them and use them.
Also, I've never tried it myself, but Flex Builder is based on Eclipse and I believe there's a way to configure Eclipse to compile with the opensource Flex compile if you'd rather work in a graphical IDE.
I have written a blog entry on how to setup Eclipse + AXDT + Flex SDK to prepare your mxml/actionscript (as3) development environment on Linux. If you are interested, you can have a look here:
http://netpatia.blogspot.com/2009/09/flash-development-on-linux.html
It looks like the Flex 3 sdk (http://www.adobe.com/products/flex/flexdownloads/index.html) is a good place to start. Any other suggestions?
I've had very good experiences with Sprouts. It is a ruby wrapper for the Flex SDK that allows building with Rake and easily hooks into continuous integration engines.
http://www.projectsprouts.com/
I've been using Flex Builder Linux recently and can recommend it. It's straightforward to get going and, for an alpha, is stable and has all the features you could want.
JetBrains IntelliJ IDEA (not free)
http://www.jetbrains.com/idea/features/flex_ide.html
JetBrains Astella (free but beta)
http://blog.jetbrains.com/astella/
http://confluence.jetbrains.com/display/AS/Astella+EAP
Project Sprouts is probably going to be the quickest way to get up and running with ActionScript or Flex development on any operating system, but especially on Linux.
You'll need to install Ruby and RubyGems, other than that, it's a couple of terminal commands and you should have an application building and displaying.
You should be able to build ActionScript 2, ActionScript 3, AIR or Flex Projects without any manual system configuration at all. Because Sprouts is inherently a CLI application, you can use any development environment you prefer and initiate your builds with simple commands like:
Compile and run debug build
rake debug
Compile and run test harness
rake test
Compile an optimized build for deployment
rake deploy
Compile your application as a library
rake swc
Generate documentation for your application
rake doc
Of course you can easily create or customize your build scripts using Rake, an amazingly simple and flexible build script engine.
Like Rails, Sprouts also comes standard with code generators that automatically create classes, test cases, test suites and even MXML components.
Unlike many open-source projects, Sprouts includes some pretty extensive and detailed documentation.
Let us know what you think.
http://projectsprouts.org
You could try Haxe. It isn't really ActionScript but it is very similar (and you could also compile to the server side or JavaScript).
While FlexBuilder is good, it lacks many of the features that Powerflasher includes in FDT (Flash Developer Tools) for Eclipse. FlexBuilder is missing things like Templates, better formatting, auto-fixing of warnings and errors. It runs on Eclipse making it cross platform, but be warned that they do not test in a linux environment (however people have had no significant complaints).
See all the features here: http://solutions.powerflasher.com/index.php?id=136#feature_03
I use the Flex SDK, Emacs (Sub your editor of choice) and Ant as my build tool. I blogged about how to get everything set up here:
http://blog.apterainc.com/software/setting-up-a-flex-development-enviroment-in-gnulinux/
Adobe has an free alpha release of FlexBuilder for Linux, I thought it was quite unstable when editing MXML files, but if your doing strict actionscript work, you may find it useful. you can get that here:
http://labs.adobe.com/technologies/flex/flexbuilder_linux/
You might like to have a look at MTASC
http://www.mtasc.org/
An open source action script compiler. I've been meaning to get around to looking at it but not had the chance yet. Heard great things about it tho.
Hopefully when I do get around to it and have questions you'll be around to answer them