7 Replies - 8134 Views - Last Post: 27 November 2012 - 02:42 PM

#1 blackcompe  Icon User is offline

  • D.I.C Lover
  • member icon

Reputation: 1155
  • View blog
  • Posts: 2,535
  • Joined: 05-May 05

Scala Information and Resources

Post icon  Posted 26 November 2012 - 09:59 PM

Scala Information and Resources



Information

Scala is a general-purpose programming language that was designed to improve upon Java by smoothly integrating aspects of the functional and object-oriented paradigms. It's completely interoperable with Java code and runs on the Java Virtual Machine. Scala is a mature language, first appearing in 2003, but has yet to really catch on in mainstream programming, unlike Ruby and Python, both of which also share many aspects of the functional paradigm. However, Scala's popularity is growing faster by day as distributed systems, parallel programming, and web intelligence technologies become more dominate on the web. LinkedIn and Twitter, for example, are two social networking giants whose infrastructure is built in Scala. If you're currently a Java or C++ programmer, you'll find the transition to Scala to be a seamless one. The syntax is intuitive to the point that you can actually concentrate on learning the language and not learning the syntax. If you're new to functional programming, I'd highly recommend trying it out for some time, as it can give you a whole new perspective on writing code in a concise and expressive manner you never thought was possible. It's actually quite addicting!

Installation

Scala can be installed on all major platforms including Windows, Mac OS, and Linux. The distribution can be download here. Scala requires JRE 1.5 or later, which can be download here. To install Scala, visit the official Setup and Getting Started page. This tutorial may be more helpful in getting started quickly.

Tools

Scala comes with an interactive REPL (Read-Evaluate-Print-Loop) shell and a script compiler. I recommend using these if you're new to Scala. There are several IDEs that support Scala development including Scala IDE (Eclipse), IntelliJ IDEA, and Netbeans. All plugins support most of what's to be expected from a state-of-the-art IDE such as code completion, syntax highlighting, build and debug tools, formatting, and much more. In addition, Scala IDE comes pre-installed with a really neat feature called a Worksheet, that evaluates your code as you type.

If IDEs aren't your cup of tea, there are numerous text editors with Scala plugins that can be found here. Most popular editors including Emacs, Vim, Notepad++, Scite, Xcode, and gedit have plugins available. And if you just want to test drive the language or you don't feel like firing up your development environment, there's Simply Scala, an on-line REPL, and Ideone.

Learning Resources

The Scala API docs are your numero uno source of information regarding Scala library usage. It's a searchable index of the entire class hierarchy that contains all class and method documentation. There's even a full set of official tutorials for learning Scala! The reference manuals, including the full language specification, and programming guides can be found here.

The creator of Scala, Professor Martin Odersky, teaches his Scala course, Functional Programming Principles in Scala, on the Coursera educational platform. Its prerequisite is proficiency in at least one object-oriented language. It's a very good course that teaches the concepts of the functional paradigm, using Scala as a vehicle to do so. By popular request, Professor Odersky will be offering a 2nd segment sometime next year, which covers Scala more in depth.

Books

There are 2 free e-books available for learning Scala: Scala for the Impatient by Cay Horstmann, and Scala by Example (direct PDF link) by Martin Odersky. Professor Odersky has also released his 2nd edition of Programming in Scala, which is available through Amazon. See this for more books on Scala.

The Implementation of Functional Programming languages is another good book to check out if you want to learn the inner workings of functional programming. It's a bit dated but it's free.

Web/GUI Frameworks

As mentioned, Scala is interoperable with existing Java libraries, so you're free to use Swing to develop GUIs. In addition, Scala has wrapped Java's Swing libraries in its own Scala-swing library, which still maintains that natural Scala feel. A quick overview of GUI development using Scala-swing can be found here (direct PDF link).

If you're interested in Web Development, Lift is a highly-scalable, open-source web framework for the Scala language. You can learn more here.

Tutorials and Exercises

Scala Quick Reference
Scala Wikibook
Scala Youtube Tutorials: A comprehensive playlist of video tutorials on basic and intermediate Scala topics.

This post has been edited by blackcompe: 18 January 2013 - 06:36 AM


Is This A Good Question/Topic? 4
  • +

Replies To: Scala Information and Resources

#2 TwoOfDiamonds  Icon User is offline

  • D.I.C Regular

Reputation: 54
  • View blog
  • Posts: 272
  • Joined: 27-July 12

Re: Scala Information and Resources

Posted 27 November 2012 - 10:27 AM

Hey !
Can I use this language to create GUI Applications ? And if so, what are its performance?
Was This Post Helpful? 0
  • +
  • -

#3 blackcompe  Icon User is offline

  • D.I.C Lover
  • member icon

Reputation: 1155
  • View blog
  • Posts: 2,535
  • Joined: 05-May 05

Re: Scala Information and Resources

Posted 27 November 2012 - 10:29 AM

Quote

Hey !
Can I use this language to create GUI Applications ? And if so, what are its performance?


Yes. See the section on Web/GUI Frameworks. What do you mean by performance? Performance in terms of ... ?

This post has been edited by blackcompe: 27 November 2012 - 10:30 AM

Was This Post Helpful? 0
  • +
  • -

#4 TwoOfDiamonds  Icon User is offline

  • D.I.C Regular

Reputation: 54
  • View blog
  • Posts: 272
  • Joined: 27-July 12

Re: Scala Information and Resources

Posted 27 November 2012 - 10:30 AM

Well , I need to handle like 30 live video streams at once in an application , do you think it can do that?
Was This Post Helpful? 0
  • +
  • -

#5 blackcompe  Icon User is offline

  • D.I.C Lover
  • member icon

Reputation: 1155
  • View blog
  • Posts: 2,535
  • Joined: 05-May 05

Re: Scala Information and Resources

Posted 27 November 2012 - 10:39 AM

Quote

Well , I need to handle like 30 live video streams at once in an application , do you think it can do that?


I've never done anything like that in Java, so I really can't answer that with confidence, but I'm willing to bet it could. I'm sure Scala-swing has been optimized to have nearly the performance of Swing.

This post has been edited by blackcompe: 27 November 2012 - 10:42 AM

Was This Post Helpful? 0
  • +
  • -

#6 TwoOfDiamonds  Icon User is offline

  • D.I.C Regular

Reputation: 54
  • View blog
  • Posts: 272
  • Joined: 27-July 12

Re: Scala Information and Resources

Posted 27 November 2012 - 10:41 AM

That would be awesome :) I'll take a look at it with the first ocassion . Thanks for everything :)
Was This Post Helpful? 0
  • +
  • -

#7 jon.kiparsky  Icon User is online

  • Pancakes!
  • member icon


Reputation: 7872
  • View blog
  • Posts: 13,350
  • Joined: 19-March 11

Re: Scala Information and Resources

Posted 27 November 2012 - 10:43 AM

I'm pretty new to Scala, but one attractive feature is the focus on making parallelism happen without strain, so yes, I'd probably prefer to approach this application in Scala than in Java. If you have the processors to deal with this, Scala should make better use of them than Java - that's the claim, anyway.
You might like to write the underlying streams as java objects and then control them with scala, that should work fine.

Bear in mind that I've never tried to do this, so my advice might be worth exactly what you paid for it.
Was This Post Helpful? 1
  • +
  • -

#8 ishkabible  Icon User is offline

  • spelling expret
  • member icon




Reputation: 1622
  • View blog
  • Posts: 5,709
  • Joined: 03-August 09

Re: Scala Information and Resources

Posted 27 November 2012 - 02:42 PM

I've been meaning to learn Scheme, Scala, and Prolog but just haven't gotten around to it. I've dabbled in Scheme and Prolog but not Scala. Perhaps I'll make a point of dabbling in Scala.
Was This Post Helpful? 0
  • +
  • -

Page 1 of 1