I've been making my way through The Little Schemer and I was wondering what environment, IDE or interpreter would be best to use in order to test any of the Scheme code I jot down for myself.
Racket (formerly Dr Scheme) has a nice editor, several different Scheme dialects, an attempt at visual debugging, lots of libraries, and can run on most platforms. It even has some modes specifically geared around learning the language.
I would highly recommend both Chicken and Gauche for scheme.
PLT Scheme (DrScheme) is one of the best IDEs out there, especially for Scheme. The package you get when downloading it contains all you need for developing Scheme code - libraries, documentation, examples, and so on. Highly recommended.
If you just want to test your scheme code, I would recommend PLT Scheme. It offers a very complete environment, with debugger, help, etc., and works on most platforms.
But if you also want to get an idea of how the interpreter behind the scenes works, and have Visual Studio, I would recommend Tachy. It is a very lightweight scheme interpreter written in c#. It allows you to debug just your scheme code, or also step through the c# interpreter behind the scenes to see what is going on.
Just for the record I have to mention IronScheme.
IronScheme will aim to be a R6RS conforming Scheme implementation based on the Microsoft DLR.
Version 1.0 Beta 1 was just released. I think this should be good implementation for someone that is already using .NET framework.
EDIT
Current version is 1.0 RC 1 from Oct 23 2009
Google for the book's authors (Daniel Friedman and Matthias Felleisen). See whether either of them is involved with a popular, free, existing Scheme implementation.
It doesn't matter, as long as you subscribe to the mailing list(wiki/irc/online-community-site) for the associated community. It's probably worth taking a look at the list description and archives to be sure you are in the right one.
Most of these are friendly and welcoming to newcomers, so don't be afraid to ask.
It's also worth searching the archives of their mailing list(or FAQ or whatever they use) when you have a question - just in case it is a frequent question.
Good Luck!
Guile running under Geiser within Emacs provides a nice, lightweight implementation for doing the exercises. Racket will also run under Geiser and Emacs, though I personally prefer Guile and Chez Scheme a bit more.
Obviously installation of each will depend on your OS. I would recommend using Emacs version 24 and later since this allows you to use Melpa or Marmalade to install Geiser and other Emacs extensions.
The current version of Geiser also works quite nicely with Chicken Scheme, Chez Scheme, MIT Scheme and Chibi Scheme.
LispMe works on a Palm Pilot, take it anywhere, and scheme on the go. GREAT way to learn scheme.
I've used PLT as mentioned in some of the other posts and it works quite nicely. One that I have read about but have not used is Allegro Common LISP Express. I read a stellar review about their database app called Allegro Cache and found that they are heavy into LISP. Like I said, I don't know if it's any good, but it might be worth a try.
I am currently working through the Little Schemer as well and use Emacs as my environment, along Quack, which adds additional support and utilities for scheme-mode within Emacs.
If you are planning on experimenting with other Lisps (e.g. Common Lisp), Emacs has excellent support for those dialects as well (Emacs itself can be customized with its own dialect of Lisp, appropriately named Emacs Lisp).
As far as Scheme implementations go, I am currently using Petit Chez Scheme, which is an interpreted, freely distributable version of Chez Scheme (which uses a compiler and costs money to obtain a license).
Related
This question is maybe somehow inspired with Anyone using Python for embedded projects?; so anyone using some Scheme version or Common Lisp (like ECL) for free/oss/commercial projects?
Personally, I used (and still using) TinyScheme for personal projects where some embedded language is needed, mostly due extremely easy embedding (sorry Python lovers, been there and that is quite painful, especially after I learned from TinyScheme how things can be simple).
The most prominent project I remember hearing about is (Gambit) Scheme on the iPhone. It was shut down by the user agreement for a while but I suppose with the new one, this kind of development is allowed again.
I don't see it on the page any more, but I remember a related blog post about interactive development on the iPhone using Scheme. Very exciting.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 12 years ago.
This may be too opinionated, but what I'm trying to understand why some companies mandate the use of an IDE. In college all I used was vim, although on occasion I used netbeans for use with Java. Netbeans was nice because it did code completion and had some nice templates for configuration of some the stranger services I tried.
Now that my friends are working at big companies, they are telling me that they are required to use eclipse or visual studio, but no one can seem to give a good reason why.
Can someone explain to me why companies force their developers into restricted development environments?
IDE vs Notepad
I've written code in lots of different IDEs and occasionally in notepad. You may totally love notepad, but at some point using notepad is industrial sabatoge, kind of like hiring a gardener who shows up with a spoon instead of a shovel and a thimble instead of a bucket. (But who knows, maybe the most beautiful garden can be made with a spoon and a thimble, but it sure isn't going to be fast)
IDE A vs IDE B
Some IDE's have team and management features. For example, in Visual Studio, there is a screen that finds all the TODO: lines in source code. This allows for a different workflow that may or may not exist in other IDEs. Ditto for source control integration, static code analysis, etc.
IDE old vs IDE new
Big organizations are slow to change. Not really a programming related problem.
Because companies standardize on tools, as well as platforms--if your choice of tools is in conflict with their standards then you can either object, silently use your tool, or use the required tool.
All three are valid; provided your alternative doesn't cause other team-members issues, and provided that you have a valid argument to make (not just whining).
For example: I develop in Visual Studio 2008 as required by work, but use VS2010 whenever possible. Solutions/Projects saved in 2010 can't be opened in 2008 without some manual finagling--so I can't use the tool of my choice because it would cause friction for other developers. We also are required to produce code according to documented standards which are enforced by Resharper and StyleCop--if I switched to a different IDE I would have more difficulty in ensuring the code I produced was up to our standards.
If you're good at using vim and know everything there is to know about it, then there is no reason to switch to an IDE. That said, many IDEs will have lots of useful features that come standard. Maintaining an install of Eclipse is a lot easier than maintaining an install of Vim with plugins X, Y, and Z in order to simulate the same capabilities.
IntelliSense is incredibly useful. I realize that vim has all sorts of auto-completion, but it doesn't give me a list of overloaded methods and argument hints.
Multiple panes to provide class hierarchies/outlines, API reference, console output, etc.. can provide you more information than is available in just multiple text buffers. Yes, I know that you have the quickfix window, but sometimes it's just not enough.
Compile as you type. This doesn't quite work for C++, but is really nice in Java and C#. As soon as I type a line, I'll get feedback on correctness. I'm not arrogant enough as a programmer to assume that I never make syntax errors, or type errors, or forget to have a try/catch, or... (the list goes on)
And the most important of all...
Integrated Debuggers. Double click to set a break point, right click on a variable to set a watch, have a separate pane for changing values on the fly, detailed exception handling all within the same program.
I love vim, and will use it for simple things, or when I want to run a macro, or am stuck with C code. But for more complicated tasks, I'll fire up Eclipse/Visual Studio/Wing.
Sufficiently bad developers are greatly assisted by the adoption of an appropriately-configured IDE. It takes a lot of extra time to help each snowflake through his own custom development environment; if somebody doesn't have the chops to maintain their own dev environment independently, it gets very expensive to support them.
Corporate IT shops are very bad at telling the difference between "sufficiently bad" and "sufficiently good" developers. So they just make everybody do the same thing.
Disclaimer: I use Eclipse and love it.
Theoretically, it would decrease the amount of training needed to get an unexperienced developer to deal with the problems of a particular IDE if all the team uses that one tool.
Anyway, most of the top companies don't force developers to use some specific IDE for now...
I agree with this last way of thinking: You don't need your team to master one particular tool, having team knowledge in many will improve your likelyhood to know better ways to solve a particular roblems.
For me, I use Visual Studio with ReSharper. I cannot be nearly as productive (in .Net) without it. At least, nobody has ever shown me a way to be more productive... Vim, that is great. You can run Vim inside of Visual Studio + R# and get all the niceties that the IDE provides, like code navigation, code completion and refactoring.
Same reason we use a hammer to nail things instead of rocks. It's a better tool.
Now if you are asking why you are forced to use a specific IDE over another, well that's a different topic.
A place that uses .NET will use Visual Studio 99% of the time, at least that's what I've seen. And I haven't found anything out there that is better than Visual Studio for writing .NET applications.
There is much more than code completion into an IDE:
debugging facilities
XML validation
management of servers
automatic imports
syntax checking
graphical modeling
support of popular technologies like Hibernate, TestNG or Spring
integration of source code management
indexing of file names for quick opening
follow "links" in code: implementation, declaration
integration of source code control
searching for classes or methods
code formatting
process monitoring
one click/button debugging/building
method/variable/field/... renaming
etc
Nothing to do with incompetence from the programmers. Anybody would be A LOT less productive using vim for developing a big Java EE application.
How big were you projects at college? A couple of classes in a couple of files? Or rather a couple of hundreds of classes in a couple of hundreds of files?
Today I had the "honor" of looking at a file in a rather large project where the programmer opted to use vi (yes vi, not vim) and a handcrafted commandline compiler call (no make). The file contained on function spanning about 900 lines with a series of if-else-if-else-constructs (because that way you have all your code in one place!!!!!!). Macho-Programmer at his finest.
OK there are very good reasons for enforcing a particular toolset within a production environment:
Companies want to standardize everything so that if an employee leaves they can replace that person with minimal effort.
Commercial IDEs provide a complex enough environment to support a single interface for a variety of development needs and supporting varying levels of code access. For instance the same file-set could be used by the developer, by non-programmers (graphics designers etc.) and document writers.
Combine this with integrated version control and code management without the need of someone learning a particular version control system, all of a sudden IDEs start to look nicer and nicer.
It also streamlines maintenance of build systems in a multi-homed environment.
IDEs are easier to give tutorials to via phone or video, and probably come with those.
etc. etc. and so forth.
The business decision making behind enforcing a standardized environment goes beyond the preference of a single programmer or for that matter perhaps the understanding of the programming team.
Using an IDE helps an employee to work with huge projects with minimal training. Learn a few key combos - and you will comfortably work with multi-thousand-file project in Eclipse, IDE handles most of the work for you under the hood. Just imagine how many years of learning it takes to feel comfortable developing such projects in Vim.
Besides, with an IDE it is easy to support common coding standards across the entire team: just set a couple of options and an IDE will force you to write code in a standardized way.
Plus, IDE gives a few added bonuses like refactoring tools (especially good in Eclipse), integrated debugging (especially good in Visual Studio), intellisense, integrated unit tests, integrated version control system etc.
The advantages and disadvantages of using an IDE also greatly depends on the development platform. Some platforms are geared towards the use of IDEs, others are not. As a rule of thumb, you should use IDE for Java and .Net development (unless you're extremely advanced); you should not use IDE for ruby, python, perl, LISP etc development (unless you're extremely new to these languages and associated frameworks).
Features like these aren't available in vim:
Refactoring
Integrated debuggers
Knowing your code base as an integrated whole (e.g., change a Java class name; have the change reflected in a Spring XML configuration)
Being able to run an app server right inside the IDE so you can deploy and debug your code.
Those are the reasons I choose IntelliJ. I could go back to sticks and bones, but I'd be a lot less productive.
As said before, the question about using an IDE is basicaly productivity. However there is some questions that should be considered by the company when choosing a specific IDE. that includes:
Company culture
Standardize use of tool, making it accessible for all developers. That easies training, reduces costs and improve the speed of learn curve.
Requirements from specific contract. As an example, there are some development packages that are fully supported (i.e. plugins) by some IDE and not by anothers. So, if you are working with the support contract you will want to work with the supported IDE. A concrete example is when you are working with not common OS like VxWorks, where you can work with the Workbench (that truely is an eclipse with lot of specific plugins for eclipse).
Company policy (and also I include the restriction on company budget)
Documentation relating to the IDE
Comunity (A strong one can contribute and develop still further the IDE and help you with your doubts)
Installed Base (no one wants to be the only human to use that IDE on the world)
Support from manufacturers (an IDE about to be discontinued probably will not be a good option)
Requirements from the IDE. (i.e. cross platform or hardware requirements that are incompatible with some machines of the company)
Of course, there is a lot more. However, I think that this short list help you to see that there is some decisions that are not so easy to take, when we are talking about money and some greater companies.
And if you start using your own IDE think what mess will be when another developer start doing maintenance into your code. How do you think will the application be signed at the version manager ? Now think about a company with 30+ developers each using its own IDE (each with its own configuration files, version and all that stuff)...
http://xkcd.com/378/
Real programmers use the best tools available to get the job done. Some companies have licenses for tools but there's nothing saying you can't license/use another IDE and then just have the other IDE open to copy/paste what you've done in your local IDE.
The question is a bit open-ended, perhaps you can make it community wiki...
As you point out, the IDE can be useful, or even a must have, for some operations, like refactoring, or even project exploring: I use Eclipse at my work, on Java projects, and I find very useful to get a list of all occurrences of the usage of a public method or a class in a project. Likely, I appreciate to be able to rename it from where it is defined, and having all these occurrences automatically updated.
The fact I have the JavaDoc displayed when hovering over a name is very nice too. Like autocompletion, jump to a class name, etc.
And, of course, debugging facilities...
Now, usage of Eclipse isn't mandatory in our shop! Some years ago, some people used the Delphi IDE (forgot its name), I tried NetBeans, etc. But I think we de facto standardized on Eclipse, but it was a natural evolution rather than a company policy. And we often just open files in a text editor when we need a quick update...
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
I am just starting at a job in which I will be using a lot of ColdFusion. What is the best IDE/Editor to use?
I'd like to provide my personal reasoning behind why you might choose any of these editors (at least the ones I'm familiar with). Just saying "use this, use that" is not at all helpful. To large degree, the question is wrong. There's rarely a "best IDE" for a language; rather, there are multiple environments, each suiting particular needs. Here goes:
1) Dreamweaver
Why you would use it: its history as a designer tool makes it much easier for "non-coder" types to start cranking out websites. If you're a solo developer building a lot of "Tom's Corner Store" type of sites, even if they require some CF Coding (mailing list, subscribers, current specials, light content management, etc), its design tools, "template" features, and ease-of-deployment (ftp) make it an attractive choice. It has good-enough code coloring and code completion for the built-in CF tags and functions. It can interrogate user-defined functions in the same page. It has excellent CSS support. You can find a wealth of extensions, too. It's pretty stable and, in my experience, hasn't been very "crashy". It will do a fair amount of code generation for you as well (whether that code is "good" is debatable). All in all Dreamweaver is incredible software for web site designers.
Why you wouldn't use it: It is not free, and it is certainly not a "coder's editor". While it provides for extensions, they're typically interface-focused (javascript validation, etc), unlike say Eclipse plugins, which can run the gamut. For large projects, it simply does not have the code navigation features that many coders come to expect. It's web-focused. So if you're a polyglot, or even just like to dabble in compiled languages (java, etc), then you'll need to keep another editor on hand for those tasks.... you won't be able to do it all in one place. ColdFusion unit testing support is nonexistent in Dreamweaver. There is no step debugging for ColdFusion.
2) CFEclipse plugged into Eclipse.
Why you'd use it: CFEclipse is going on 6 years old now and has matured significantly. It's been quite stable for the last few years and most crashiness has been due to Eclipse itself and not CFEclipse (which was not true in the early days). Recently CFEclipse has seen an infusion of fresh blood and features are being added to make coding in it even more productive. It contains a wealth of keyboard shortcuts, many of the toolbar features people love from ColdFusion Studio days, and Eclipse's in-built code navigation features (namely, Ctrl-Shift-R for finding files quickly).
It has content assist for native CF Tags and functions, and some support for in-page variables, though that's never worked all that well. It does not support in-page functions, nor does it provide native true component insight (i.e. insight into components that you write and use in other code). It will support component insight to some extent with Dictionaries, but even then, it requires a lot of work on the part of the dictionary creator. Most people find dictionaries too much work to maintain, in my experience.
The lastest version of CFEclipse contains the best CFML formatting you'll find.
For me, "method explorer" and "Snip Tree View" -- particularly keyboard shortcuts for inserting snippets -- have been big productivity boosters.
If you work with ColdSpring, ModelGlue, Mach-II, ColdBox, and other frameworks with xml configuration files, CFEclipse's Framework Explorer is brilliant.
Because it's a plugin to Eclipse, you can do everything else you'd want to do in Eclipse. You wanna code java? You can. You want webservice support? you got that. You want to do step debugging, you can do so with the free Adobe-provided extensions for Eclipse.
The large plugin ecosystem is one of the most attractive features of Eclipse, and you shouldn't discount this when deciding on an editor. For example, I would not want to work without Mylyn, which integrates with issue tracking and in my experience has transformed the way I work, much for the better.
Eclipse's version control system support is excellent as well. Subversion is well supported; there's a VSS plugin; and recently a git plugin (if not two) has been accepted into the Eclipse foundation so we'll see native git support very soon (you can get it now with a plugin).
Eclipse's ANT support is excellent.
You can easily plug the MXUnit Eclipse plugin into Eclipse for unit testing your CFML (full disclosure: I contribute to MXUnit).
Finally, I have full confidence that the folks working on CFEclipse -- Denny, Mark, Jim, Peter, et al. -- will continue to work toward keeping CFEclipse as the best open source CFML IDE available. These are some of the brightest minds in the ColdFusion community and are passionate about their mission. If you choose to use CFEclipse, you are not choosing to use an IDE that will be supplanted by ColdFusion Builder. This project is in good hands.
Why you wouldn't use it: it's a code IDE, not a design tool like Dreamweaver. It's not perfect... code assist can be too aggressive in its suggestions. Eclipse itself, especially when you pile it up with all kinds of plugins, can get unstable on lesser machines. Finally, people who don't like the "Project" view of the world often have complaints about it because they're used to working directly with the file system view of the world. Its deployment support is nowhere near as simple as Dreamweaver, though you can find plugins that get close.
3) ColdFusion Builder
Why you'd use it: all of what I said previously about Eclipse itself applies to CFBuilder when used as a plugin to Eclipse. I cannot speak to the Standalone version because as of this writing, it still doesn't support plugins very well. This will most surely be fixed by the time it is released, but I don't want to speculate on what the Standalone may or may not do.
One of CFBuilder's big draws is "Extensions". These are a way to plug in CFML code into your editor. It's hard to describe, so I'd suggest googling for "ColdFusion Builder Extensions", and you'll most likely be amazed. Adobe's Terry Ryan has created "Apptacular" for scaffolding applications from a database, and Brian Rinaldi has a series of posts on building CFBuilder extensions. These are huge and will prove themselves to be a developer's best friend after CFBuilder is released.
CFBuilder's deployment support is, in my opinion, on par with if not superior to Dreamweaver's.
CFBuilder does not require an additional plugin to do step debugging. Just hit the debug button and off you go.
CFBuilder contains true component insight, meaning that it can introspect components you write and provide ctrl-space content assist. It can be wonky, however, and does require some configuration. But please remember that as of now, CFBuilder is still in beta. My best guess is that it'll be at least a few versions until all the kinks are worked out of this feature. Still, it's a big productivity and learning booster to get content assist on your own components.
CFBuilder provides a "Servers" view for stopping/starting your CF Server. It's built on Aptana and so contains the Aptana "tail log" view, which is great for watching log files. Just like CFEclipse, it has a Snip Tree View.
The CFBuilder "vision" is led by Adobe's Adam Lehman. He's passionate about CF and is a force of nature. I have great hopes for CFBuilder because of Adam's leadership.
Why you wouldn't use it:
For one, it won't be free. Noone outside Adobe knows yet how much it will cost, however. "Extensions" and the deployment features alone may be worth the price. Time will tell.
Because it's an Adobe product, I think it's reasonable to assume that releases will come as frequently as most Adobe products, which means... not very often. While CFEclipse deploys rather frequently lately -- and makes available a "nightly" site for the brave -- CFBuilder will most likely not do such daring-do. CFEclipse can afford to make potentially unstable builds available to the public, while it is perhaps not in Adobe's best interests to do so with CFBuilder.
Finally, it's still in Beta and might not be released for some time. If you get it now and start using it, remember that. In my experience, debugging is wonky, content assist sometimes works, sometimes doesn't, and a lot of people have experience crashiness. It's free beta software... you're getting what you pay for. But know that the more you work with this beta release, and particularly if you provide feedback via the public bug database, the better off all of us will be if it provides a best of breed editor for CFML.
Personally:
At home, when I do "designer" work, I use Dreamweaver when I feel that its Templates will help me build a site as quickly as possible. For existing side projects which require maintenance coding and easy deployments, I use ColdFusion builder.
At work, where I do almost no design work, CFEclipse has been my IDE since 2006. I've begun using ColdFusion builder a lot, though currently I split my time between CFBuilder and CFEclipse. One reason is that as of this writing, CFEclipse is more stable (i.e. it doesn't crash and I don't lose work). I fully expect stability problems to be mitigated by the time CFBuilder costs money.
Both CFBuilder and CFEclipse have public bug databases. CFEclipse has a well-attended public mailing list, and if you have questions, you'll get answers quickly. I cannot yet speak to the speed with which CFBuilder questions are answered.
Finally, for "coders", it's my experience that once you invest the time in learning the tools and shortcuts, Eclipse provides superior productivity compared with designer tools like Dreamweaver. For cranking out a designed site, a designer tool like Dreamweaver confers significant advantages.
The answer to the best ColdFusion IDE isn't an answer, but a question: "What are you trying to do with ColdFusion?" The answer to that question will lead you to an IDE that suits your needs for a particular project. Different circumstances or projects may lead you to a different tool which better suits your needs.
Notepad++ with CF syntax highlighting.
For free: Eclipse with CFEclipes plugin
For cost: If you're a developer, use Coldfusion Builder, if you're a front end designer Dreamweaver edits Coldfusion pretty well. I use it quite often.
I have heavily used Dreamweaver, CFeclipse with eclipse and now Coldfusion Builder. What I found is this:
1) Dreamweaver is only good for the few times you have to do some wysiwyg wizardry. The newer versions do have SVN integration so you might be able to get away with using it. I did use it for a few years on windows.
2) CFEclipse + Eclipse - Generally the standard of what' sbeen used for a while. Runs well, once you add in the Adobe dictionary files and subclipse, you have a good environment
3) Coldfusion Builder - This is Adobe's version of CFeclipse. It's still pretty new and getting to later beta. I switched to it about 6 months ago and haven't looked back. It's got a lot of wizards, including the ability to write your own plugins in CFML that will run right inside CFbuilder. It's free right now on beta but will likely be pretty cheap like the first flex builder that came out.
My Choice: Coldfusion Builder. It doesn't mean the others aren't capable, but you'll spend the least amoutn of time getting setup and maintaining your plugins, etc.
Since I had paid for and used Dreamweaver for a lot of years (Eclipse was generally sluggish sometimes on PCs' a while back until the excess of ram + cpu today), spending to have an adobe maintained copy of eclipse is okay with me. The wizards available in CFbuilder, especially for flex are excellent.
Hope that helps, good luck and share what you ended up picking and why!
For anyone who might stumble here from Google, you should also take a look at Sublime Text coupled with the ColdFusion package.
If you are familiar with Eclipse I would recommend Eclipse with coldfusion plugin.
http://www.cfeclipse.org/
Some use Eclipse, some use ColdFusion Builder, some use emacs or TextMate or vim. I use vim.
It doesn't take much time to try out an IDE or editor. Give them all a shot and stick with the one you like most.
The best IDE is ColdFusion Builder. It allows RDS, In Line Debugging, Extensions (written in ColdFusion!), Code Generation, Refactoring, supports JavaScript, CSS and HTML and so much more. It is currently in beta and should be released in production sometime this year.
CFEclipse is a great IDE for CFML and is the right choice if you are writing CFML for the open source engines. It is free and like most open-source free products it can do almost anything Builder can do if you invest the time to install the additional plugins (like Aptana) and tweak your setup just right.
I use both. At work, we use Builder. At home, I use CFEclipse.
Welcome to the CFML community!
Notepad++. Light and easy to use.
I'll vote for jEdit. While it doesn't offer great ColdFusion support beyond syntax highlighting, and therefore probably isn't great for learning ColdFusion, its flexibility in working with other languages (which seems to happen fairly often while working on the web), powerful macros, plug-in support, proper text wrapping, and loads of other features, make it the editor to which I always end up returning after trying out the "next best thing".
CFEclipse appears to be the most popular. Adobe has a beta of ColdFusion Builder (also based on Eclipse) but when I tried it a few months ago it was still buggy.
Personally I use TextMate (OS X) a pretty bare bones text editor.
I have used textpad, for 6 years, still a solid app, provides syntax coloring/highlighting, regular expressions support. Can easily search inside any file, through tons of folders/subfolders.
Just a fast loading, easy to use, tool.
Also has macros, and macro programming...
http://www.texptad.com
I'd like to throw E TextEditor for the Windows users in here as well. Its similar to sublime but it does have its advantages. E is more or less Textmate for windows and will allow you to run the cftextmate bundles. In addition to being lightweight and extremely fast you get the huge Textmate community developing bundles, color schemes, and other community driven content.
Some of the highlights of E is that it will allow you to open a directory and treat it directory as a project. Hitting Shift-Ctrl T will allow you to browse all the files in your project in a flattened hierarchy which allows you to find files extremely fast.
I'm really excited about this new and experimental language named Subtext. But it's author haven't released nothing about it besides some papers and videos. Should I clone it? There are similar alternatives?
UPDATE I'm looking for an example-driven VPL, not just a VPL.
As Edwards' says in his related work section, the Self programming language is very similar. It shares subtext's emphsis on directness, uniformity, and liveness, but doesn't emphasize a tabular format (Schematic tables).
A lot of of work went into the Solaris version:
http://research.sun.com/self/papers/papers.html
seems there's a Mac & linux version, not sure how mature it is:
http://selflanguage.org/
Here's a video demo'ing Self, where they emphasize directness, uniformity, and liveness:
http://www.smalltalk.org.br/movies/
When you say "any VPL", do you mean none at all, or not a run-of-the-mill one? From the wording of the title question, I'll assume the latter. Here're a couple with some serious programming theory behind them:
Morphic is/was a/the UI piece of Self, and is now ported to Squeak:
http://wiki.squeak.org/squeak/2139
Prograph was a way-cool system, but I don't know of an available version.
A bit further out there is Kahn's Toontalk, based on Pictorial Janus:
http://www.toontalk.com/
I am sure you are aware of VPL On Wikipedia that lists many different VPL languages. You have not supplied information on what you are trying to achieve but another site is Synopsis. This is a commercial product.
From their website:
Synopsis is a completely visual RAD tool for Windows that frees you from having to write textual code and learning unnecesary programming details. With Synopsis you can concentrate on creating software instead of wrestling with mundane and complex low-level development tasks.
The image below shows how this application looks:
(source: codemorphis.com)
Granted my knowledge on this subject is limited and I do follow this to see if something really powerful can be created. I did see a project on CodeProject or CodePlex that was written in C# that allowed VPL but I cant find that URL.
If I ever do find that application I will edit this post!
You haven't provided more information about features you expect from such a VPL environment, but I think that "Tersus" could be interesting thing to look at. There're many VPLs, but mainly they're targeted as educational tools or addition to particular technologies (i.e VPL for Microsoft Robotics Studio) to simplify common tasks programming. The "Tersus" is full blown application development platform. It's open source and free to download for many OSes.
http://www.tersus.com
Coherence — The Director’s Cut
The Coherence home page is up at http://coherence-lang.org. The submitted version of the paper is there, with a new intro and a surprise ending.
Coherence claims to be an experimental programming language, a continuation of Subtext using other means.
Intentional shipped, but they are still kind of alpha, with limited distribution and testing. You can make example driven DSLs, but I don't know if the environment itself works that way.
http://lambda-the-ultimate.org/node/3287
You could look at the work on eve that is happening too:
http://incidentalcomplexity.com/
As already discussed in "Lua as a general-purpose scripting language?" Lua currently probably isn't the best scripting language for the desktop environment.
But what do you think about the future? Will Lua get so popular that there will soon be enough libraries to be able to use it like Python, Ruby or something similar?
Or will it simply stay in it's WoW niche and that's it?
I think it has a great future, a lot of projects are starting to adopt it for it's simplicity and usefulness.
Example: Awesome WM (Window Manager)
The project recently released version 3, incorporating a new configuration system completely written in Lua. Allowing you to literally write your configuration file as a program, loops, booleans, data structures.
Personally I love the syntax and the flexibility of such a system, I think it has great potential.
I wouldn't be surprised if it became more popular in the future.
Brian G
I suppose the answer starts with 'It depends how you want to use it...'.
If you're writing the common business app (fetch the data from the database, display the data in a web page or window, save the data to the database), Lua already has what you need.
The Kepler Project contains goodies for web development. Check out their modules to see some of the available libraries - there's network, MVC, DBMS access, XML, zip, WSAPI, docs...
As an example web app, check out Sputnik.
For desktop UI, there's wxLua - Lua hooks for wxWidgets.
ORM is conspicuously missing but that didn't stop people from developing in other languages before ORM was available.
If you're looking for specialized libraries - scientific, multimedia , security - don't count Lua out before you check LuaForge.
When it comes down to it, there's nothing in Lua's design that prevents general purpose use. It just happens to be small, fast, and easy to embed... so people do.
Uh? I would say instead WoW is a niche in the Lua ecosystem... The world of Lua doesn't revolve around WoW, there are lot of applications, some big like Adobe Lightroom (to take a non game), using Lua.
Lua is initially a scripting language, in the initial sense, ie. made to be embedded in an application to script it. But it is also designed as an extensible language, so we will see progressively more and more bindings of various libraries for various purposes.
But you will never get an official big distribution with batteries included, like Python or Perl, because it is just not the philosophy of the authors.
Which doesn't prevent other people to make distributions including lot of features out of the box (for Windows, particularly, where it is difficult to build the softwares).
Lot of people already use it for general system-level scripting, desktop applications, and such anyway.
There are more and more libraries for Lua.
If you are a Windows user, have look at Lua for Windows. It comes with "batteries included" (wxLua, LuaCURL, LuaUnit, getopt, LuaXML, LPeg...).
Very usefull!
It's 2017, 9 years after this question was first asked, and lua is now being heavily used in the field of machine learning due to the Torch library.
I really like it as an embedded language. It's small, very easy to use and embed and mostly does what I need right out of the box. It's also similar enough to most languages that it has never really been an issue for me. I also like how easy it is to redefine and add base functions and keywords to the language to suit whatever needs my application has.
I have used it in the WoW area but I've also found it useful as a generic scripting language for a number of different applications I've worked on, including as a type of database trigger. I like Ruby and Python and other more full-featured scripting languages but they're not nearly as convenient for embedding in small applications to give users more options for customizing their environments.
being comfortable as a shell language has nothing to do with being a great general purpose language.
i, for one, don't use it embedded in other applications; i write my applications in Lua, and anything 'extra' is a special-purpose library, either in Lua or in C.
Also, being 'popular' isn't so important. in the Lua-users list periodically someone appears that says "Lua won't be popular unless it does X!", and the usual answer is either: "great!, write it!", or "already discussed and rejected".
I think the great feature of Lua is, that it is very easily extensible. It is very easy to add the Lua interpreter to a program of your own (e.g. one written in C, C++ or Obj-C) and with just a few lines of code, you can give Lua access to any system resource you can think of. E.g. Lua offers no function to do xxx. Write one and make it available to Lua. But it's also possible the other way round. Write your own Lua extension in a language of your choice (one that is compilable), compile it into a native library, load the library within Lua and you can use the function.
That said, Lua might not be the best choice as a standalone crossplatform language. But Lua is a great language to add scripting support to your application in a crossplatform manner (if your app is crossplatform, the better!). I think Lua will have a future and I think you can expect that this language will constantly gain popularity in the long run.
Warhammer Online, and World of Warcraft use it for their addon language I believe.
I think it's hot! I'm just no good at it!
Well, greetings from 2022.
It is already a general purpose language. Today you can even serve pages using OpenResty, extend games, read databases or create scripts as shellscript replacements.
There are a plenty of libraries "modules" for Lua, many ways to achieve what you are wanting and Lua 5.4 is even faster.
The "extendable and extensive" nature of Lua, accostumed people to think it should only be used as plugin or extension. In Linux, by example, you can shebang a file with lua-any, make it executable and run like any system script. Or you can make a folder app like Python or virtualenv using Lupe. Lua 5.3 also gained impressive performance improvements.
Also there are many good tools like IUP to create native windows in Lua for Mac, BSD, Linux and Windows and side environments like Terra that lets you use Lua with its counterpart Terra and write compiled programs. Lua now, is more than a extension language, it has its own universe.