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'm a relatively new person to programming, I've read the first half of SICP until I thoroughly ingrained it into every cell in my body, took a class implementing basic data structures in Java, and made programs in Mathematica. But that is about as far as my knowledge goes, which is my problem.
I'm trying to play with Clojure via netbeans/enclojure and, to be honest, I don't know how to get anything beyond constructing functions and manipulating data structures in the REPL.
For example, I want to use Incanter for statistics stuff, but I don't know how to install it since I have never really used a terminal (I'm using windows vista), and don't know where to begin. When I search google, all the tutorials seem to assume knowledge with Unix, or they assume knowledge of how emacs works, etc.
I suppose what I am looking for is an online tutorial that covers the very basics of how to set everything up for a programming environment that doesn't assume previous knowledge.
Thanks,
Bryan
I'm relatively new to programming as well. My suggestion is that Unix or Linux are easier environments to program in. I know you said that you don't have experience with it, but you can pick up the basic commands in an afternoon. Learning basic Unix commands are going to be much, much easier than learning Java or Clojure, for example. The advantage is that once you have some basic familiarity with Unix/Linux then the rest of the environment becomes much simpler. This is a guide to Unix for someone who has never used it before:
http://www.ee.surrey.ac.uk/Teaching/Unix/
A quick way to try it out would be to download Cygwin, which is a Unix emulator that runs in Windows. You can install this and then try out Unix. Also, when you install Cygwin, you get a list of languages and text editors that you can install with it, so setting up that environment becomes fairly easy:
http://www.mcclean-cooper.com/valentino/cygwin_install/
I wouldn't suggest using Cygwin forever though, it'd just be a way to start out and see if you like programming in a Unix environment.
You can take some book that describes Clojure - for example, Practical Clojure first, and than - The Joy of Clojure - these books give you understanding of language.
About installing of plugins, etc. you can read on following page. Projects are usually maintained with Maven or Leiningen (I gave links to my articles). Dependencies, like Incanter are found through clojars, and put into project's files.
And clojure mailing list - good place where to ask questions...
Clojure is really fun, and managing the dependencies is not.
I think that using leiningen to create and build the project with its dependencies will help you skip to the fun part :) Leiningen from windows works just fine from what I hear though I dont see much advantage in trying to get away from the CLI. You should be fine sticking with windows and perhaps spending some time with the windows shell (or powershell) I hear a lot of good things about it.
ohh and another vote for the joy of clojure :)
If you are strict about using a windows environment, then I can recommend clojure box.
http://clojure.bighugh.com/
If you are flexible, I'd recommend setting up a virtual machine (with Virtualbox) and work in a *nix environment. Luckily, you may not have to do much since there are turnkey solutions with an editor, dependency management, and other tools configured and installed.
See
http://technomancy.us/150
Some examples include:
http://github.com/notifymd/vagrant-clojure-box
http://github.com/Seajure/emacs-clojure-vagrant
A caveat, though, is that these do seem to depend on gem.
As a bonus, if you are willing to spend time learning a *nix, then I can also recommend my dependency management software. You should be able to use any editor for this, but I'm only familiar with emacs. If you tell me what you use, I should be able to help you set it up.
http://github.com/bmillare/dj
I like to keep it simple. For Netbeans, you need to import the Incanter JAR files as they are merely Java libraries. Do a search on how to add libraries to Netbeans. Once that's done, then you can use Incanter in Netbean's REPL.
Once you feel like learning more, follow the other people's advice here and learn Leiningen, command line interface, Linux, emacs, etc.
Unfortunately, setting up a development environment for Clojure is just about the hardest part of learning it. There is no single, canonical way to do it, as shown by all of the other answers to this question.
Another option you might consider is LispCabinet. Despite its name, one of the options it provides is to set up a Clojure programming environment. A couple of advantages of this approach are that 1) it works in Windows, 2) its an Emacs environment, since a lot of the tutorials you find talk about how to do things with that editor, and 3) it makes it easy to explore and play with other, more traditional Lisps like CLISP and SBCL.
I too started with NetBeans and enclojure. I dearly love NetBeans for Java and PHP, but enclojre just doesn't seem stable. It's constantly breaking. So I gave up on it.
There are also plugins for IDEA and Eclipse if you prefer those environments.
But really, I recommend LispCabinet. You can see a slightly longer rationale on my blog at http://clarkonium.net/2011/02/getting-started-with-lispschemeclojure/.
Related
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.
On the Emacs development list there is long thread (you can find it here) about the "Emacs learning curve" (this is the name of the thread). The participants have various opinions about why some people may not want to use Emacs. If you gave an Emacs a try in the past and then chose an other editor/IDE instead then please describe in your answer here the reasons which made you look for an other tool.
Your answers can give some real world input to the developers on how Emacs should be changed, so that new users can discover its powers and don't give up trying. Thanks.
Because VI is installed on the servers by default, emacs isn't.
I once tried emacs, but I was already pretty familiar with vim, so I didn't really have any incentive to get good at emacs. That's the only reason for me, really.
I tried Emacs for a while and then Vim, and decided to stay with Vim. The reason was that in Emacs you constantly had to use Shift/Ctrl/Alt which was uncomfortable, compared to Vim.
As a novice programmer, I just find vim's use of modes more appealing than the keyboard combinations used in Emacs.
The effectiveness of Autocomplete/Intellisense is very dependent on the language. For instance, with C, I find the autocomplete in Visual Studio, which I use whenever I code in Windows, nearly useless. For languages like C, Perl, Python and the like, I use Emacs.
However, Emacs seems very counterproductive for something like C# or Java because it lacks the extremely useful built-in documentation* and autocomplete functionality of Eclipse and Visual Studio. I know that it has a rudimentary autocomplete for some modes, and very many Emacs Lisp packages available, but I haven't found anything that even comes close to Eclipse or Visual Studio.
*(not counting man pages! I mean something like where Visual Studio puts tooltips with documentation over members, etc.)
Ah, the fresh smell of flame bait.
I like my tools to be as invisible as possible. I am most productive when I can spend all of my time thinking about my problem and not my text editor.
I gave emacs an honest try, but ultimately found other tools to be better for me. I just never found it to be intuitive.
can't stand the whole two sets of key combinations for a command thing in any editor I have seen it in. I tried really really hard to like emacs, but I couldn't get over that. now I use vim, and still wish that emacs wasn't so painful (physically and figeratively) to use
I love emacs and use it every day, but for Java development I usually use Eclipse. I've tried to set up the emacs Java Development Environment and it wasn't able to handle parsing the newer syntax features (annotations, generics) that I use regularly.
For emacs macro recording/playback tasks, I'll open the Java code in emacs, edit and then switch back to Eclipse.
Here are some of the features I can't live without now, which are found in Eclipse with keyboard shortcuts but not available to me in emacs:
Context-sensitive auto-complete.
Fuzzy search for a class name and open the source. Searching by initials for CamelCaseClasses is wonderful.
Who overrides this method?
Who calls this method?
Run or debug just this unit test (just this method).
Warn me about unused imports, deprecated methods, etc.
Hover over a declaration to preview the HTML version of the javadoc.
Reorganize imports, e.g. change import java.util.* to a bunch of imports for just the classes I actually use.
Redeploy this webapp in Tomcat (automatic when you save a file via this plugin)
Top reasons I open emacs:
Record editing macros for complex but repetitive editing.
Edit remote files via tramp.
Edit files when I don't have an Eclipse project defined.
This might sound silly, but I didn't like the font rendering and didn't feel like customizing it.
Second reason is that I thought it was the ugliest program period. It'll give MSBOB a run for its money
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 9 years ago.
I used to develop Java on the mac and it worked out well, combo of just using the terminal and IntelliJ. What are good tools that run on the mac for doing Ruby development
Most of the Rails people develop on Macs and use TextMate. As a result, TextMate has great support for Ruby and Rails, and is probably the best text editor to use for developing Ruby code on the Mac.
Netbeans is a fantastic choice with lots of good features for debugging, refactoring, db browsing, source control and lots more.
I use emacs, which has a fine ruby mode.
I'll second/third the Textmate recommendation. Calling it a text editor is doing a bit of disservice. Start off with this PDF that has some useful ruby/rails textmate shortcuts
TextMate is an excellent editor, and is probably the best editor for Ruby code, as mipadi said. For an open source alternative, you could also try Smultron. It's a bit rough around the edges, but it does the job quite nicely.
I love TextMate although have been flirting with NetBeans. If you like a full-featured (aka bloated) IDE, give it a try. Pretty nice:
http://wiki.netbeans.org/Ruby
JetBrains (the people behind IntelliJ) are working on an IDE specifically for Ruby on Rails: RubyMine.
if you like vim, adding onto it with fuzzyfilefinder (http://github.com/jamis/fuzzy_file_finder/tree/master) and rails.vim (http://www.vim.org/scripts/script.php?script_id=1567) plugins provides a really nice experience.
if you don't like vim, textmate is a decent text editor.
You have used IntelliJ already? You should probably take a look at the Ruby/Rails integration. It supports things like debugging, code analysis and refactorings, etc.
TextMate is my favorite, but if you want code completion NetBeans is the best choice (Aptana/RedRails is outdated). Nightly builds of NB has a lot nicer OSX look and feel.
If you're coming from *nix and you like Vim, then MacVim.
If you're coming from any other OS and/or you don't like Vim, then TextMate.
TextMate is not free, but it's well worth the €39. Trust me on this. It will pay for itself many, many times over.
MacVim or AquaEmacs are really the best choice for people developing on Mac who want to get the most out of their editor: for people less particular, Textmate is the way to go.
I always recommend VIM/Emacs to anyone because
They are not GUI based, which means everything they do is easily modifiable and scriptable
They are much more easily extendable
You can use them on a server
They are generally faster as there is less code in between you and the underlying operating system
They usually support more languages and varied development styles
They are much more transparent and understandable as to what they are doing
By necessity everything is accomplishable via a keyboard shortcut, so developing on them is faster
Sublime Text 2, as recommended by a colleague (I don't have personal experience with it).
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 6 years ago.
Improve this question
I'm looking for some help and it goes like this:
I'm a fairly green software developer, and focus mainly on the web (python/PHP) but am pretty well experienced with Java applications and as an electrical engineering student, looking forward to dive into some c/c++. I've pretty much grown up on Windows machine, but hate .net with a passion and dont really have a need to develop on Windows - besides the fact that i'm used to it.
I'm looking to switch to Ubuntu as my development machine entirely (without having WinXP on another partition) as I'm quite fedup with Windows, but am tempted to go back to it everytime i'm stuck with countless driver issues (be it headphone drivers, or dual monitor setup, etc). I'm looking for a comprehensive resource that will help this transition and doesn't assume you know alien linux shell keywords.
Cheers.
In my personal experience with Ubuntu, the two places that I consistently found help were Ubuntu Forums and Ubuntu Wiki. These two sites demonstrate just how helpful, organized, and motivated the Ubuntu Community is.
An additional resource is also the Ubuntu channel on IRC. Whenever I was stuck with an issue that I felt warranted a discussion with someone (or a handful of people), IRC was always a good place to go.
Lastly, I tend to learn a lot from reading blogs from people that are heavily involved in Ubuntu's development. Planet Ubuntu is a pretty good feed to keep in your reader. It's essentially an aggregation of a number of blogs. The majority of the posts are related to Ubuntu; however, there are occasional posts that are just about the developer's thoughts and opinions.
I would recommend you set up your PC in such a way that:
Have three partitions, one for swap (1-2x ram size), one for / (root dir) and one for /home.
Keep everything not related to running linux in /home, or on completely separate harddrives. Don't store stuff you wanna keep on the partition that holds /.
This allows you to rather effectively nuke your entire linux install and install another one without losing your data or your settings. This lets you do two things:
If you really break your install you can often just nuke it and reinstall. Most distros you're going to try will deal with upgrading you back to the current version quickly.
If you're not happy with, say, Ubuntu, you can just nuke it and install something else, say OpenSUSE, CentOS or Fedora.
The key thing to remember is that all your personal settings (desktop background, application settings etc) are stored in /home/yourname/ under hidden directories, definied by naming them with a '.', .gnome for example. System settings are stored in /etc, but with most distros these days system settings are so well guessed you never need to care. The data you care is under /home/yourname.
If you're going to move to another distro I would recommend copying those hidden directories into another directory under your home/yourname directory, say 'old-prefs' or something. This is because you want to start 'fresh' with the new install. You can copy back hidden dirs you know you want later (I for example would always copy back .opera, .mozilla).
Also, don't throw away your Windows install, not yet anyway. You may find Linux is not for you. You may find the inability to play any new games without rebooting a pain. You may find various things don't work as seemlessly as they do on Windows, in my experience that includes Adobe Flash and various sound-related things (sound has recently been rooted imo due to early PulseAudio adoption).
As other people have said, the Ubuntu wiki and Ubuntu forums are good, and for that reason it's the first distro I suggest you try. It's so popular that you often get better results in google by replacing 'linux' with 'ubuntu'.
Not an answer, per se, but some unsolicited advice:
All platforms have problems
Developing on one platform is pretty much like developing on another
Familiarity with both the *nix and Windows worlds is useful
Good luck!
I would agree with Tom's answer in terms of resources to answer questions. In addition to that, I would recommend being prepared to learn to use a command prompt and to learn a lot more about the underpinnings of the system than you are probably used to on Windows. Linux in general exposes the "machinery" of the OS quite a bit more frequently than Windows, and if you're the type of person that doesn't like to tinker with things occasionally then it is probably not for you.
For example, my dad is an engineer and experienced programmer, and he has no interest in using Linux, because he doesn't want to have to futz with things to get them working. For him, using Windows is all about the path of least resistance. I on the other hand, use OS X and Linux on a regular basis and I love that when things don't work, I at least have the option of digging in and fixing the problem. I love the ready availability of command line interfaces, multitude of scripting options, and the general openness Linux has. It's hard to tell from your post which type of personality you have, but if you're looking forward to digging into C/C++ and you enjoy electrical engineering, Linux will probably be a good fit for you.
Lastly, I highly recommend using the command prompt frequently, even when there are GUI interfaces. Linux GUI apps are frequently built on top of the console applications. It almost always will be easier to work with things if you're familiar with and comfortable with the command line. Most seasoned *nix users also find that eventually it becomes more efficient and comfortable to get many types of tasks done from a command prompt. If you plan to develop on Linux then this is all the more likely to occur as you get used to thinks like working with build tools and scripts that are common on UNIX platforms.
EDIT: One last thing I cannot recommend enough: use virtualization! Install something like VirtualBox, VirtualPC or VMWare Player to run Linux in a virtual environment. Virtualization has come along far enough since the days I started using Linux such that you can now install and run Linux in a full-screen environment almost indistinguishable from running it natively. Using a virtualized environemtn also will make things like drivers a non-issue, since the generic "hardware" should be supported out of the box. Virtualization or a "Live CD" version of Linux (such as the Ubuntu live CD) is a fantastic way to get used to Linux without having to throw out the safety blanket of Windows right away.
The other advice here is excellent. As somebody who made the same leap at the end of 2005, I just wanted to add my own two penneth.
Expect a steep learning curve. I'd been using Unix / Linux type servers for best part of 13 years when I switched. Not the same. When I switched is when I started learning. My productivity dipped at first, but I know SO much more about our deployment environment now - and of course productivity back an exceeded original. But it 'aint easy.
When you DO switch, you never look at an OS in the same way again. Makes it easy treating any OS as just a set of things you have to learn. This in itself is a good thing (tm)
The biggest problem at first is looking for linux equivalents of windows ways of doing things. I remember looking for decent FTP client (in the end IF I am forced to use FTP now, I use konqueror with two windows - but just wait till you discover rsync!), a decent graphical subversion client (then realised that knowing how to use find, sed, grep and svn cmd line client was much much better) etc.
I have heard people before say that resorting to the command line is admission of failure. While this may be true if there is no choice in it, you soon come to revel the blending of graphical and command line tools to get the job done. For example, I tend to use find and grep and xargs to load up my IDE with stuff I want to work on.
You learn to love computing again. The whole computer becomes a tool for getting things done.
The biggest change is the freedom. Not the cost. But that fact that installing software is as simple as "sudo apt-get install" or graphical equivalent. Even a very non-technical windows user soon comes to relish this amazing aspect that of Linux.
Enjoy!
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 2 years ago.
Improve this question
I am starting to learn the Clojure programming language. Are there any recommendations for Clojure editors/IDEs on Mac OS X?
Update 2009-09-23: The Clojure space has changed tremendously since I originally posted this question. Many of the links below, especially those that refer to clojure-mode with Emacs, are out-of-date. The best Clojure IDE I found was the Enclojure Netbeans plugin which was recently released (2009-08-25).
Update 2010-04-30: Another very good article on this subject is Clojure IDEs - The Grand Tour by Lau B. Jensen. Also, for my own clojure development, I have actually moved to Emacs / swank-clojure.
For setting up Aquamacs, Slime and Clojure, there's a screencast on lispcast.com:
http://www.lispcast.com/drupal/node/79 (broken link)
Edit:
That's a nice alternate screencast you found Jman. I've added it to my answer so it's a bit more comprehensive.
Emacs+SLIME is going to be the most productive if you are going to be spending your time editing Lisp code and not doing much Java.
Paredit is also a must-have since it makes it almost difficult to insert invalid s-expressions. It takes a bit of getting used to, but it is emphatically worth it.
You can try NetBeans with Enclojure.
One of the "big 3" Java development IDEs is IntelliJ IDEA. It used to get less market share because it's not free as in beer. JetBrains is now providing a Community Edition of IntelliJ IDEA . I'm not a regular Mac user myself, but the OS X 'I use this' folks say it runs there too.
IDEA has a plugin called La Clojure, available directly from the plugin manager under "Settings," that makes Clojure development pleasant and productive.
Previously, I tried
WaterFront, for which "IDE" is IMO a bit of a reach;
Counterclockwise, a pretty good Eclipse plugin; and
Enclojure, the NetBeans plugin.
but anticipate staying with IDEA and La Clojure
Rich Hickey uses Aquamacs in all of his demos. He has commented about this, saying that he switched to it after someone created a Clojure mode for Emacs. I have also created a Clojure mode for jEdit.
At the moment, tool support for Clojure is pretty limited. I think you're either stuck with some Emacs variant or jEdit.
If you go the emacs route, I highly recommend using clojure-paredit. Paredit takes some getting used to, but it really reinforces the "code is data" notion.
This is an old question, but the landscape of the Clojure tooling has evolved quite a bit.
Nowadays the options are :
Light table, very easy to get started.
IntelliJ + Cursive or La Clojure. Someone once recommended me Cursive.
vim + fireplace. I know some very productive people use it.
Emacs + CIDER and Paredit, my personal choice. Apparently Rich Hickey uses Aquamacs.
I personally learnt to use Emacs to use it with Clojure, although some may argue that learning two things at the same time is not a good idea.
There is a survey here regarding the popularity of IDE/Editors :
Emacs rocks !
Emacs with Slime may be a good choice. See this article that explains a setup.
Emacs Carbon with SLIME and clojure-mode works like a charm. I tried Aquamacs before and it feels too different from the command line emacs for me. I really don't like Terminal.app and after months fighting against it I decided to migrate to Carbon.
TextMate is a great editor and has a Lisp bundle, which will suffice for Clojure (there's also an in-progress bundle available here). I've always used TextMate + the Lisp bundle for writing Clojure code.
I'm using Vim for Clojure and am enjoying it. I installed the Vim Clojure plugin mentioned in the wiki and also followed the instructions there for making the REPL more user friendly using rlwrap.
Light Table is pretty great; unfortunately I can't run it on my Mac because I'm stuck on OS X 10.6 and it requires 10.7+.
I've been using Light Table on another Mac and on several Windows computers – it's pretty nice.
[I used to help out with the open source project.]
Bill Clementson has updated his setup.
You may also try IntellliJ IDEA with La Clojure plugin.
I use Clojure on MacOSX for about 3 months. I am very happy with Emacs and use it for more an more tasks. The start was quite hard but now i would say it was worth the efforts to learn emacs.
For IntelliJ 10 the La Clojure Plugin has been updated so that it should work now with Clojure 1.2.0 again.
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 6 years ago.
Improve this question
How do you develop in Clojure on Windows systems?
Personally I use emacs because no other IDE feels right with sexpression languages to me. Swank/slime/emacs/clojure is just such a powerful repl setup nothing else feels right to me. If you want it set up easily (assuming you don't already have emacs set up) check out clojurebox
https://github.com/devinus/clojure-box
Preconfigged to just work on windows after running an installer.
On the site, the first thing you would read when getting started lists all your current options.
There is a netbeans add-in, emacs mode and vim syntax highlighting.
There is also an eclipse plug-in here: http://code.google.com/p/counterclockwise/
Edit: changed link per js' comment
Enclojure (in Netbeans) is now released and works well on Windows.
VimClojure is a good lightweight solution.
I don't. I'm waiting on the release of Enclojure, the netbeans plugin that fixes some of the windows problems.
UPDATE: I do now, Enclojure ROCKS! :D
Another interesting IDE under development is a project funded through Kickstarter.com, the Light Table IDE:
http://app.kodowa.com/playground
The IDE is heavily inspired by the concepts Bret Victor presented at CUSEC 2012: Inventing on Principle
Chris Granger felt so inspired by Bret's ideas, that he quickly put together a proof-of-concept for a new Clojure IDE, which he calls Light Table. The project got $300k of funding through Kickstarter, and very early releases of the IDE are available through the project playground. Installation is as easy as a single download and click, if you have Java and Chrome installed on your system.
The IDE is in a very early stage, but has some very distinctive features, especially the "live" view of your code in the right panel. Check this screenshot of Light Table running in Chrome:
I have been experimenting with Clojure last two months and in my
learning process I used several applications.
So, I have made a package and want it to share it with everybody that
want to learn Clojure.
What's wrong with the existing Clojure Box? well... nothing at all;
but if you are like me and want to avoid the complexity of learning a
new programming language in a new ide (for me) like emacs you may be
find this package useful.
You have a customized version of scite, an application named
WinCommand to work more confortable with Clojure repl and JSwat to
debug your code.
Remember that WinCommand is developed using .Net framework (VS 2008)
but it was developed 4-5 years ago and my programming skills wasn't
the bests, so if you find something that can be fixed you can suggest
me.
Give it a try and let me know what do you think about it!
Ahh...jejeje... well.. if you want to download it you can find here:
http://sites.google.com/site/dariomac/Home/projects
Jetbrains recently released "La Clojure", a Clojure plugin for their already excellent (but commercial) Java IDE IntelliJ IDEA. Once you have IDEA installed you can install the plugin from the plugin manager, or download it from the plugin website.
I tried to use VimClojure but found it uninviting. I'm a Vim person, but the idea that I have to compile my editor before even trying it out is definitely not what I'm looking for. The fact that the author says he doesn't care about Windows support any more adds to my disinclination to use it. On top of that, the documentation is pretty poor.
I'm attracted to ClojureBox which is Clojure and Emacs in an easy-to-use installer. Maybe it's time to give Emacs another shot. It comes right up in the REPL.
Clooj is good for learning. Not, probably, a practical IDE for real development — for that I'd use Emacs — but it's a perfect way to get started with no complex setup.
If anyone new to clojure like I am. Intellij + Cursive seems to be very friendly to newbie.
Link: https://cursive-ide.com/
I use Lighttable to develop Clojure apps. Its pretty fantastic! I would recommend.