Altabel Group's Blog

Posts Tagged ‘programming languages

We see this “Is Java out of business?” question pop up year after year. They say that Java is the least feature-rich language of the popular languages on the JVM and the slowest to move on new features in the last decade. There are also people who believe that because so many new JVM languages are being invented is proof that the Java language is lacking and that Java is no longer meeting the needs of many developers. And yet, by all external markers, Java is alive, well, and growing.

Here are several proofs for it:

1. TIOBE ranked Java as its top language of 2015 currently shows it enjoying 5% growth in use since 2014, more than any other programming language.

2. RedMonk has recently published the latest edition of its bi-annual list of the top programming languages. Compiled with the help of data obtained from GitHub and StackOverflow, this list tells us about the usage and discussion of a language on the web. Just like the previous years Java is among the top of the programming languages.

3. Further, the PYPL Index, which ranks languages based on how often language tutorials are searched on Google, shows Java clearly out in front with 23.9% of the total search volume.

Since Java first appeared it has gained enormous popularity. Its rapid ascension and wide acceptance can be traced to its design and programming features, particularly in its promise that you can write a program once, and run it anywhere. Java was chosen as the programming language for network computers (NC) and has been perceived as a universal front end for the enterprise database. As stated in Java language white paper by Sun Microsystems: “Java is a simple, object-oriented, distributed, interpreted, robust, secure, architecture neutral, portable, multithreaded, and dynamic.”

So here are the most common and significant advantages of Java that helped it to take its high position in a quite competitive environment of programming languages:

  • Java is easy to learn.
    Java was designed to be easy to use and is therefore easy to write, compile, debug, and learn than other programming languages.
  • Java is platform-independent.
    One of the most significant advantages of Java is its ability to move easily from one computer system to another. The ability to run the same program on many different systems is crucial to World Wide Web software, and Java succeeds at this by being platform-independent at both the source and binary levels.
  • Java is secure.
    Java considers security as part of its design. The Java language, compiler, interpreter, and runtime environment were each developed with security in mind.
  • Java is robust.
    Robust means reliability. Java puts a lot of emphasis on early checking for possible errors, as Java compilers are able to detect many problems that would first show up during execution time in other languages.
  • Java is multithreaded.
    Multithreaded is the capability for a program to perform several tasks simultaneously within a program. In Java, multithreaded programming has been smoothly integrated into it, while in other languages, operating system-specific procedures have to be called in order to enable multithreading.

Nonetheless things changed since the time when Java was created. In the recent years, many important languages have appeared and left an impact on the technology world. Due to their simplicity and user-friendliness, they have managed to surpass the more established languages. So we tried to make a list of reasons why Java is going to stay on the grind in the nearest future:

1. Java is time-proved.
You generally need a strong reason to switch from a language you’re currently using: it requires time to practice and learn new languages, and you have to be confident that the language you’re considering switching to will be supported in the long term. Nobody wants to build software in a language that will be obsolete in five years’ time.

2. JVM and the Java Ecosystem.
The Java Virtual Machine, or JVM. compiles programs into bytecode, which is then interpreted and run by the JVM. Because the JVM sits above your specific hardware and OS, it allows Java to be run on anything, a Windows machine, a Mac, or an obscure some flavor of Linux.

The big advantage granted by the JVM is in this increased compatibility and the stability it affords. Because your application runs in the VM instead of directly on your hardware, you can program said application once and trust that it is executable on every device with a Java VM implementation. This principle is the basis for Java’s core messaging: “Write once, run everywhere.” And it makes Java applications very resilient to underlying changes in the environment.

3. Java and the Internet of Things.
“I really think Java’s future is in IoT. I’d like to see Oracle and partners focused on a complete end-to-end storage solution for Java, from devices through gateways to enterprise back-ends. Building that story and making a success of it will help cement the next 20 years for Java. Not only is that a massive opportunity for the industry, but also one I think Java can do quite well,” said Mike Milinkovich, Executive Director of the Eclipse Foundation.

Oracle agrees. Per VP of Development Georges Saab, “Java is an excellent tech for IoT. Many of the challenges in IoT are many of the challenges of desktop and client Java helped address in the 1990s. You have many different hardware environments out there. You want to have your developers look at any part of the system, understand it and move on. Java is one of the few technologies out there that lets you do that.”
 
Thus, Java might have its detractors, and some of their arguments might even be reasonable. Nonetheless Java has evolved a lot since its inception, holds the lead in many areas of software development and has more prospects for the future. So, in our opinion, its survivability is not in doubt.

And what do you think? Is Java going to become one of the dead languages? Or it has all chances to survive? Feel free to share your thoughts in comments below!

 

yana-khaidukova

Yana Khaidukova

Business Development Manager

E-mail: yana.khaidukova@altabel.com
Skype: yana_altabel
LI Profile: Yana Khaidukova

 

altabel

Altabel Group

Professional Software Development

E-mail: contact@altabel.com
www.altabel.com

 

“Computer programming is an art, because it applies accumulated knowledge to the world, because it requires skill and ingenuity, and especially because it produces objects of beauty.”
Donald Knuth, 1974

 

It’s better to start your journey into the career of programming by answering the question “Do you really need programming?” This question does not apply to those, who majored in computer programming or was close to it. If at school you were good at math, if you like to spend a lot of time sitting in front of the computer, if you want to learn something new, then programming is for you. What is more, this area is now in demand and highly paid in the world, job vacancies for the post of programmers are always open. Isn’t it the best time to be a programmer? 🙂

Everyone knows that the future programmer should be able to think broadly and to present the project from different perspectives before its implementation and realization. Unfortunately, the machine does not understand a human language. Of course, I’m not talking about Siri and other voice recognition — I’m talking about the creation of new software. To create the calculator, the computer needs to be given the task in the same way as the foreman explains to workers how to lay bricks. That’s why you can’t do anything without understanding the programming languages. Well, first you need to decide what kind of programming languages we should start with.

And here everyone chooses a language which will be useful for him. It depends on the kind of products you are going to develop. Most of us studied Turbo Pascal at school, and it’s no news that this language is practically not used anymore. So, if you want to join the team of programmers in the nearest future, the choice of language should be made sensibly.

Among the most popular programming languages in 2016 are Java, followed by C languages, then Python, JavaScript, PHP, Ruby, etc. It should come as no surprise that the more popular language is, the more chances you have to find work in the future. So, you’d better start with Java or C#, as these are the best paid and relatively simple learning languages of writing code. If you can’t cope with them, then you should try to learn Python. This language suits for quick and effective programming.

But if you have no programming experience at all you can start with something more simple for understanding. Good examples can be the basics of HTML and CSS.

Why? These two languages are essential for creating static web pages. HTML (Hypertext Markup Language) structures all the text, links, and other content you see on a website. CSS is the language that makes a web page look the way it does—color, layout, and other visuals we call style. Well, if you are interested in making websites, you should definitely start with HTML and CSS.

Let’s move to JavaScript. It is the first full programming language for many people. Why? It is the next logical step after learning HTML and CSS. JavaScript provides the behavior portion of a website. For example, when you see that a form field indicates an error, that’s probably JavaScript at work.

JavaScript has become increasingly popular, and it now lives outside web browsers as well. Learning JavaScript will put you in a good place as it becomes a more general-purpose language.

Some people also suggest choosing Python as the first programming language because Python’s program code is readable, first of all. You don’t even need to be a programmer to understand what is happening in the program. Due to the simple syntax of Python you will need less time for writing programs than in Java, for example. A huge base of libraries will save you a lot of strength, nerves and time. Large technology companies are working with Python: Yandex, Google, Facebook and YouTube. It is used for web applications, game development, software for servers.

Java can also be a good choice for a beginner. This language is more popular than Python, but a bit more complicated. At the same time, the development tools are much better designed. Java is one of the most popular languages for the backend development of modern enterprise web applications. It is used in Amazon, eBay, LinkedIn and Yahoo! With Java and the frameworks based on it, developers can create scaling web apps for a wide range of users. Java is also the primary language used for developing Android applications for smart phones and tablets. Moreover, after Java you will be able to work with low level programming languages.

PHP is one more popular language. The PHP language, along with databases (e.g. MySQL) is an important tool for creating modern web applications. Most of the sites developed on PHP are focused on a large amount of data. It is also a fundamental technology of powerful content management systems like WordPress. There are no normal imports in PHP, there are many solutions to one and the same problem. And it makes training more complicated.

 

 
The languages C and C# are a bit complicated for a beginner. But if you develop software for embedded systems, work with system kernels or just want to squeeze out every last drop from all available resources, C is what you need.

Ruby has begun to gain popularity since 2003, when the framework Rails appeared. Used widely among web startups and big companies alike, Ruby and Rails jobs are pretty easy to come by. Ruby and Rails make it easy to transform an idea into a working application, and they have been used to bring us Twitter, GitHub, and Treehouse.

Choosing a programming language may still seem challenging. It shouldn’t. You can’t go wrong. As long as you choose a language that is regularly used in technology today, you’re winning. When you are starting out, the goal is to become solid in the basics, and the basics are pretty similar across almost all modern programming languages.

Part of learning to code is learning a language’s syntax (its grammatical or structural rules). A much bigger part of learning to code, the part that takes longer and gives you more headaches, is learning to solve problems like a programmer. You can learn the grammatical structure of the English language pretty quickly; however, you won’t truly understand the language until you put that grammatical structure to use in a conversation. The same is true in programming. You want to learn the core concepts in order to solve problems. Doing this in one language is similar to doing it in another. Because the core concepts are similar from language to language, I recommend sticking with whichever language you choose until your understanding of the core concepts is solid. If you have a clear idea of your reasons for learning to program, and know exactly what you want to accomplish with your new coding skills, then you’ll be able to make the right choice.

How did you guys get into programming? What are the best programming languages for first-time learners?

Please, share with us your experience and opinion here below 🙂

 

Kate Kviatkovskaya

Kate Kviatkovskaya

Business Development Manager

E-mail: Kate.Kviatkovskaya@altabel.com
Skype: kate.kviatkovskaya
LI Profile: Kate Kviatkovskaya

 

altabel

Altabel Group

Professional Software Development

E-mail: contact@altabel.com
www.altabel.com

Today the number of programming languages is beyond measure. Even being a quite skilled specialist you can easily get lost in the sea of object-oriented, functional, imperative, dynamic, compiled, interpreted, and scripting languages. Nevertheless, developers continue writing code on the proven Java, C ++, JavaScript, PHP etc. So do we really need new programming languages?

However, in spite of the capacity and multifunctionality of popular languages, no one’s syntax is perfectly universal at the moment. Moreover, the programming is constantly developing. The spread of multi-core processors, cloud software, mobility, and distributed architectures have created new challenges for developers that require new approaches and new tools to solve them. Adding support for the latest features, paradigms, and patterns to already existing languages, especially the most popular may be quite complicated and sometimes the best solution is to start from the scratch.

Below a few programming languages are represented, each of them can seriously affect the current programming: solve a certain problem or eliminate disadvantages of the most popular languages nowadays.

1. Ceylon

This program language is quite similar to Java, but is not its clear version of course. Gavin King denies the fact that the developed language in Red Hat will be a “Java Killer”. King is well-known for the creation of ORM framework, Hibernate for Java. He likes Java, still considers that there is a lot of staff to be improved.

Among those things that are dissatisfied by King in Java are detailed syntax of the language, the lack of top features and higher-order functions, as well as the lack of support of meta-programming. He is particularly aggrieved with the shortage of declarative syntax for structured data defining, which, according to King’s words, “equates Java to XML». Ceylon aims to solve all these problems.
There is no any Ceylon virtual machines, Ceylon-compiler will produce java-bytecode that can run on JVM. But the language will be more than just compiler. Instead of XML it uses similar to JSON the declarative syntax for data tree structure has a static typing and modules system and supports a number of structures lack in Java – sequence, intersection and union. The strategic goal of this project is to create a new set of developer for Ceylon, which will replace Java, which, according to King, is “swollen”, clumsy and still not thoroughly modernized.

Also it’s said that Ceylon and Scala overap in many features, however there are lots of very curious points that distinguish it. Ceylon strengths against Scala are in: providing modularity, union/intersection types, abstraction over function, runtime metaprogramming.

2. Dart

Javascript was forced upon the world because it was the only language usable for client-side scripting. It suites well for creating the basic dynamics on the page, but once the application starts grow, you can see the shortcomings of JS. Thus, Google developers have created Dart and it has come to compete with Javascript. It’s very likely that Dart may accustom to web programming quite permanently.

As well as in JS, Dart uses C-like syntax and keywords. However, one significant difference is that while JS is based on the prototypes, objects in Dart are determined by using classes and interfaces, like C ++ or Java. Dart also allows programmers to further define variables with static types. The idea is to make the Dart as familiar, dynamic and flexible language as JavaScript, which at the same time allows developers to write code, quick and easy in its execution, and where it is tough to make an error. Inherently, dart is created to run fast by being less permissive than JavaScript. There is a newly written from scratch VM that is designed specifically for Dart and is designed to be fast.

Among the biggest benefit of Dart is that it’s familiar and easy to learn for developers with backgrounds in Java/ActionScript/C# and JavaScript.

Today Dart is not used much. It has been developed to run either on the client or server (like Node.js), but the only way to run the client version of the Dart-code is its Cross Compilation in JavaScript. Even working like this it doesn’t work in all browsers. Still Dart is released under a free license such as BSD, and any seller who agrees with the Google terms can use the language for his products without any payment.

3. F#

Functional programming has been popular for a long time, but purely functional languages as Lisp and Haskell are often considered unsuitable for the software development, due to the fact that the codes of functional type are difficult to combine with the codes and libraries that are written in imperative languages (C ++, or Java).

F# language has been developed by Microsoft to unite the functionality and practicality. Since F # is the language of first-class on .Net CLR, it maintains the same libraries and functions like other CLR languages (such as C # or Visual Basic).

F# code is similar to OCaml code, but has its own interesting syntax. For instance, to facilitate the scientific calculations numeric data types in F # can be units of measure. Also F# has constructions to facilitate asynchronous input/output, CPU parallelization and output processes on the graphics processor.

The downside of F# is that it is not designed for a developer to dig into the details of how things are done like he would in an imperative programming language like C#. Despite the main downside, the upside is that F# can result in software that is more reliable, secure, and runs at a higher speed. It is more streamlined, and can allow an able practitioner to accomplish more things in a shorter amount of time.

In the past five years, F# has continued to gain its popularity, and Microsoft has detailed how the language has helped to solve complicated programming problems in industries as diverse as banking, insurance and energy.

Today the functional language comes with Visual Studio 2010, that is even better, but it’s not typical for the Microsoft corporation as the F # compiler and core library are available under the open Apache license. It’s free, and you can even use it on Mac, and Linux (using Mono runtime).

4. GO

Interpreters, virtual machines, and control codes are very popular today. The Google team of engineers leading by Robert Griesemer Ken Thompson and Rob Pike have developed Go – programming language for general purpose, which is suitable for everything: starting from application development up to programming systems. In this sense it is more like C or C ++, than Java or C #. Still as the latest languages, Go includes such advanced features as memory cleaning from unnecessary data, reflection of current processes etc.

Also it’s important that the language was created for easy programming. Its basic syntax is similar to C, but Go deletes unnecessary repetition during optimization programs such as objects definition. The aim of Go team was to create the language which it would be convenient to write codes on, as well as on a dynamic scripting language, still which at the same time would had the power of compiled languages.

As it has begun to grow in prominence, the platform has matured and new features have been added. For example, the creators announced at the end of last year that it would be possible to develop Android apps using Go code only, which could attract further interest and open new possibilities – particularly as most Android software has been written in Java so far.

After five years of evolution, Google’s Go language — with version 1.5, which came out August 2015 – has gone from being a curiosity to a promising source for fast-moving new projects.

5. Opa

Web Development – is not easy, even the simplest web application consists of endless lines written on several languages: HTML and JavaScript for the client, Java or PHP for the server part, SQL for database, etc. Who would have thought that it will be possible to write simultaneously the fronted and backend code, in the same language within the same module. Precisely for this purpose was created Opa language.

In Opa application user interface, client logic and the database server IO is written on one language – Opa. This is achieved with the combination of frameworks from the client and server. Opa compiler decides where this program should be run (on client, server, or on both of them), and then executes its code. For clients programs, it translates Opa to the appropriate JavaScript code, including AJAX calls.

The environment Opa combines its own Web server and database management system that cannot be replaced by independent alternatives. In any case, it might not be so important, taking into account the opportunity to develop modern web applications, managed by data with just a few dozen lines of code. In fact, this language enables to write full-stack applications: server (backend) programming (running on Node.js), client (frontend) programming (compiled to JavaScript) and database programming (using MongoDB).

Opa is free of charge for using and currently is available for 64-bit Linux and Mac OS X platforms, others ports have been developed yet.

6. Fantom

If you want to make a Java or .Net application, Fantom is at your disposal. In the beginning Fantom was created for a cross-platform mobility, so while using Fantom you can make a choice, and afterwards even switch the platforms. It provides a concise syntax along with elegant, cross portable libraries. Moreover the project Fantom consists not only of a compiler, which can run bytecode for JVM or .Net CLI but also it produces code from the API set, which separates API Java and .Net and form an additional level of mobility. It’s considered to be the one of Fan’s primary benefits, because it gives a chance to develop a suite of system APIs that are elegant and easy to use compared to the Java and .NET counter parts.

Further increase of Fantom mobility is planned. A compiler from Fantom into JavaScript is already available, and the next goal is the LLVM project compiler, the Parrot VM and Objective-C for IOS.

However, mobility is not the whole Fantom point. Being similar to C by its nature, it should also improve languages, which inspired developers to create it. It strives to take an intermediate position in the most controversial issues of syntax such as strict or dynamic typing, or while choosing between interfaces and classes. It has a light additional syntax for declaring data structures and object serialization. Besides it supports embedded functional programming and overlapping.

Like many of the niche languages, Fantom suffers from limited support via external tools. Its only IDE support, for example, is a single plug-in to the NetBeans product. This is likely to change as the community for Fantom grows and its unique design and cross-platform characteristics become more widely known.

Fantom is distributed for free under the Academic Free License 3.0 and is available for Windows and Unix-like platform (including Mac OS X).

7.haXe

Portable code is no longer off the wall. For instance, C has many available compilers for diverse architectures and CPU, and Java-bytecode will work wherever there is a JVM. However haXe is more than just portable, this is a multiplatform language, which can be used for different architecture as well as with various operating environments, ranging from embedded binary systems to interpreters and virtual machines.

Nowadays developers can write programs in haXe, and then compile them into object code, JavaScript, PHP, Flash/ActionScript or NekoVM bytecode. Extra modules for C# and Java compilation are under elaboration.

In addition to the wireframe language there is a standard haXe library, which runs alike with every object, and there are specialized libraries to perform the peculiar functions of each platform. This includes data structures, maths and date, serialization, reflection, bytes, crypto, file system, database access, etc. The Haxe standard library also includes platform-specific API that gives you access to important parts of the platform capabilities, and can be easily extended.

The haXe syntax similar to C and has an ample feature set. Its main advantage is the ability to eliminate the problems inherent in each of the platform. For example, haXe has strict typing where JavaScript doesn’t; the settings and type inference are added to ActionScript; besides it completely expels the poorly designed, ill-conceived PHP syntax.

Despite the fact that haXe is still under development, it’s already being used commercially by its creator, the game studio Motion Twin. Haxe is also used by thousands of developers worldwide to build games, apps, tools, and frameworks. Several high profile companies are using Haxe, such asNickelodeon, TiVo, Zynga and Prezi. It’s available for Linux, Mac OS and Windows under a combination of free licenses.

8.Zimbu

The majority of programming languages borrow functions and syntax from earlier languages. Zimbu took some pieces from almost all of them. Zimbu does not enforce one specific style of programming. You can do it the way that works best for the task at hand. The brainchild of Bram Moolenaar, creator of the Vim text editor, Zimbu is going to become a fast, precise, portable and easy to read language, which can be used to design anything from GUI-applications to OS kernels.

With its hybrid character, Zimbu syntax is unique and specific, but at the same time is rich with features. It uses expressions and operators, similar to those used in C, but with its own keywords, data types and block structures. It supports memory management, threads and conveyors. To be short Zimbu is procedural, like C: define procedures and data structures separately. Object Oriented, like Java: define classes that hold both procedures and data, support inheritance and other mechanisms to encourage code re-use. Functional: support function references, closures and callbacks.

The only problem is portability. Although Zimbu is a compiled language, its compiler produces ANSI C code, and binary files can be created only on platforms with integrated C-compiler.

Unfortunately, Zimbu project is still under development. The compiler and a few sample programs can be built by themselves, but not all valid Zimbu-code will compile and run properly. Not all declared functions are implemented; moreover even some implemented are ill-adapted. The language specification also might be changed over time: keywords, types and syntax will be added as the need arises. Hence, documentation is patchy. Still if you want to give it a try, pilot tools are already available under the Apache license.

9.Chapel

Chapel, the first programming language by Cray, was created with provision for supercomputing and clustering.

Chapel is part of Cray Cascade Program, a large-scale HPC development, partially funded by the US Defense Advanced Research Project Agency (DARPA). Among the goals of this project are the segregation parallel algorithms from the hardware, the performance improvement on architectures and rising the parallel program’s portability. The creators typically characterize the Chapel language as having features related to the base language, task parallelism, data parallelism, and locality.

Chapel’s syntax consists of several languages’ syntaxes. In addition to the most frequently used (C, C++, Java), it borrows the concepts from such scientific programming languages as Fortan and Matlab. ZPL, High-Performance Fortan and previous Cray projects influenced Chapel’s functions of parallel-processing. Chapel is an imperative block-structured language, designed to be easy to learn for users of C, C++, Fortran, Java, Python, Matlab, and the like.

In contrast to many previous higher-level parallel languages, Chapel is designed around a multiresolution philosophy, permitting users to initially write very abstract code and then incrementally add more detail until they are as close to the machine as their needs require.

As it currently stands, Chapel is a useful prototype, yet one that requires additional work in order to be valuable to real users. At the moment it can be run on Cray supercomputers and various high-performance clusters, and it can be ported to most Unix systems (including MacOS X and Windows with Cygwin). The source code is available under a BSD-type free license.

10. X10

Once the parallel processing has been a specialized niche of software development, but due to the spread of multi-core processors and distributed computing, parallelism has gained popularity. Unfortunately, today’s programming languages don’t keep up with this trend. That is why IBM Research creates X10 – the language, which is developed specially for parallel architectures and aimed at accumulating developer productivity “ten times”. It is a class-based, strongly-typed, garbage-collected, object-oriented language.

X10 parallelism is possible thanks to PGAS programming model (a model of the divided global address space). Code and data are divided into blocks and distributed across different “spaces”, thus facilitating the program scaling from a single-threaded prototype (a single space) to a multi-threaded, running on one or more multicore processor (few spaces) in high-performance cluster.

It is well designed to get rid of some complexity related to distributed-computing programming. X10 code most coincides with Java code. In fact, the x10 runtime is available either as built-in executable files or as class files for the JMV. X10 compiler can output C++ or Java source code. In future it is planned to develop a direct compatibility with Java. It also strives to eliminate possibility of errors by design, and through static checking.

Meanwhile the language is establishing, though it is already quite developed. Implementations of X10 are available for a wide variety of hardware and software platforms ranging from laptops, to commodity clusters, to supercomputers.The compiler and runtime environment are available on different platforms, including Linux, Mac OS X and Windows. Additional utilities include: the interactive development environment(IDE), based on Eclipse, and a debugger. They are both distributed under the Eclipse Public License.

Unfortunately it’s represented not all new languages, still as for me main ones…

If you have tried to work with any of them, you are welcome to share your experience in comments. Would be interesting to read about your practices.

Thanks for your attention 😉
 

Elvira Golyak

Elvira Golyak
Elvira.Golyak@altabel.com
Skype ID: elviragolyak
Senior Business Development Manager (LI page)
Altabel Group – Professional Software Development

The big languages are popular for a reason: They offer a huge foundation of open source code, libraries, and frameworks that make finishing the job easier. Sometimes the vast resources of the popular, mainstream programming languages aren’t enough to solve your particular problem. Sometimes you have to look beyond the obvious to find the right language, where the right structure makes the difference while offering that extra feature to help your code run significantly faster without endless tweaking and optimizing. This language produces vastly more stable and accurate code because it prevents you from programming sloppy or wrong code.

The world is filled with thousands of clever languages that aren’t C#, Java, or JavaScript. Some are treasured by only a few, but many have flourishing communities connected by a common love for the language’s facility in solving certain problems. There may not be tens of millions of programmers, who know the syntax, but sometimes there is value in doing things a little different, as experimenting with any new language can pay significant dividends on future projects.

The following six languages should be on every programmer’s radar. They may not be the best for every job — many are aimed at specialized tasks. But they all offer upsides that are worth investigating and investing in. There may be a day when one of these languages proves to be exactly what your project — or boss — needs.

Erlang: Functional programming for real-time systems

Erlang’s secret is the functional paradigm. Most of the code is forced to operate in its own little world where it can’t corrupt the rest of the system through side effects. The functions do all their work internally, running in little “processes” that act like sandboxes and only talk to each other through mail messages. You can’t merely grab a pointer and make a quick change to the state anywhere in the stack. You have to stay inside the call hierarchy. It may require a bit more thought, but mistakes are less likely to propagate.

The model also makes it simpler for runtime code to determine what can run at the same time. With concurrency so easy to detect, the runtime scheduler can take advantage of the very low overhead in setting up and ripping down a process. Erlang fans like to flourish about running 20 million “processes” at the same time on a Web server.

If you’re building a real-time system with no room for dropped data, such as a billing system for a mobile phone switch, then check out Erlang.

Go: Simple and dynamic

Google wasn’t the first organization to survey the collection of languages, only to find them cluttered, complex, and often slow. In 2009, the company released its solution: a statically typed language that looks like C but includes background intelligence to save programmers from having to specify types and juggle malloc calls. With Go, programmers can have the terseness and structure of compiled C, along with the ease of using a dynamic script language.

While Sun and Apple followed a similar path in creating Java and Swift, respectively, Google made one significantly different decision with Go: The language’s creators wanted to keep Go “simple enough to hold in one programmer’s head.Thus, there are few zippy extras like generics, type inheritance, or assertions, only clean, simple blocks of if-then-else code manipulating strings, arrays, and hash tables.

The language is reportedly well-established inside of Google’s vast empire and is gaining acceptance in other places where dynamic-language lovers of Python and Ruby can be coaxed into accepting some of the rigor that comes from a compiled language.

If you’re a startup trying to catch Google’s eye and need to build some server-side business logic, Go is a great place to start.

Groovy: Scripting goodness for Java

The Java world is surprisingly flexible. Say what you will about its belts-and-suspenders approach, like specifying the type for every variable, ending every line with a semicolon, and writing access methods for classes that simply return the value. But it looked at the dynamic languages gaining traction and built its own version that’s tightly integrated with Java.

Groovy offers programmers the ability to toss aside all the humdrum conventions of brackets and semicolons, to write simpler programs that can leverage all that existing Java code. Everything runs on the JVM. Not only that, everything links tightly to Java JARs, so you can enjoy your existing code. The Groovy code runs like a dynamically typed scripting language with full access to the data in statically typed Java objects. Groovy programmers think they have the best of both worlds. There’s all of the immense power of the Java code base with all of the fun of using closures, operator overloading, and polymorphic iteration.

Finally, all of the Java programmers who’ve envied the simplicity of dynamic languages can join the party without leaving the realm of Java.

CoffeeScript: JavaScript made clean and simple

Technically, CoffeeScript isn’t a language. It’s a preprocessor that converts what you write into JavaScript. But it looks different because it’s missing plenty of the punctuation. You might think it is Ruby or Python, though the guts behave like JavaScript.

CoffeeScript began when semicolon haters were forced to program in JavaScript because that was what Web browsers spoke. Changing the way the Web works would have been an overwhelming task, so they wrote their own preprocessor instead. The result? Programmers can write cleaner code and let CoffeeScript turn it back into the punctuation-heavy JavaScript Web browsers demand.

Missing semicolons are only the beginning. With CoffeeScript, you can define a function without typing function or wrapping it in curly brackets. In fact, curly brackets are pretty much nonexistent in CoffeeScript. The code is so much more concise that it looks like a modernist building compared to a Gothic cathedral. This is why many of the newest JavaScript frameworks are often written in CoffeeScript and compiled.

Haskell: Functional programming, pure and simple

For more than 20 years, the academics working on functional programming have been actively developing Haskell, a language designed to encapsulate their ideas about the evils of side effects. It is one of the purer expressions of the functional programming ideal, with a careful mechanism for handling I/O channels and other unavoidable side effects. The rest of the code, though, should be perfectly functional.

The community is very active, with more than a dozen variants of Haskell waiting for you to explore. Some are stand-alone, and others are integrated with more mainstream efforts like Java (Jaskell, Frege) or Python (Scotch). Most of the names seem to be references to Scotland, a hotbed of Haskell research, or philosopher/logicians who form the intellectual provenance for many of the ideas expressed in Haskell. If you believe that your data structures will be complex and full of many types, Haskell will help you keep them straight.

Julia: Bringing speed to Python land

The world of scientific programming is filled with Python lovers who enjoy the simple syntax and the freedom to avoid thinking of gnarly details like pointers and bytes. For all its strengths, however, Python is often maddeningly slow, which can be a problem if you’re crunching large data sets as is common in the world of scientific computing. To speed up matters, many scientists turn to writing the most important routines at the core in C, which is much faster. But that saddles them with software written in two languages and is thus much harder to revise, fix, or extend.

Julia is a solution to this complexity. Its creators took the clean syntax adored by Python programmers and tweaked it so that the code can be compiled in the background. That way, you can set up a notebook or an interactive session like with Python, but any code you create will be compiled immediately.

The guts of Julia are fascinating. They provide a powerful type inference engine that can help ensure faster code. If you enjoy metaprogramming, the language is flexible enough to be extended. The most valuable additions, however, may be Julia’s simple mechanisms for distributing parallel algorithms across a cluster. A number of serious libraries already tackle many of the most common numerical algorithms for data analysis.

The best news, though, may be the high speeds. Many basic benchmarks run 30 times faster than Python and often run a bit faster than C code. If you have too much data but enjoy Python’s syntax, Julia is the next language to learn.

Polina Mikhan

Polina Mikhan
Polina.Mikhan@altabel.com 
Skype ID: poly1020
Business Development Manager (LI page)
Altabel Group – Professional Software Development

 

The IT sector is flourishing. If you’ve used a computer for at least a couple of times in the last few years, you’ve probably noticed this. I’ve noticed it myself even more after a business trip to Stockholm where I was lucky to attend some conferences and learnt more about Swedish IT industry tendencies. These tendencies reflect our life in general. Life changes rapidly with new technologies bursting into it. And when it comes to programming languages, we get a chance to see very different trendy styles. Programming languages which were popular some years ago are not useful today. And no one can exactly predict which programming language will be popular in future. That’s why a programmer who wants to stay in developer fields has to adopt the right programming language from time to time.

As the Swedish software maker Erik Starck pointed out, “programming is about managing complexities”. And it’s really so. An understanding of at least one programming language makes an impressive addition to any CV nowadays.

It is also very difficult to get the exact number of users for any programming language. Many of us use multiple programming languages. The more experience you have, the more programming languages you use. The more programs you write or work with, the chances of using more languages rise. The larger the company, the more languages you’re likely to use.

There are a number of ways to measure the popularity of a programming language, for example, based on the number of: 1) new applications written in the language; 2) existing applications written in the language; 3) developers that use the language primarily; 4) developers that use the language ever; 5) web searches; 6) available jobs that require skills in the language; 7) developers’ favorites, etc.

My survey attempts to rank which programming languages are most popular in Sweden, each using a different measure. So, they are the following:

1) Python

Python is an object-oriented programming language which allows developers to work quickly while integrating their systems more efficiently and effectively. Designed by Guido van Rossum in 1991, Python is one of the most easy to use programming languages.

Python is characterized by its use of indentation for readability, and its encouragement for elegant code by making developers do similar things in similar ways.

Top Employers: Amazon, Dell, Google, eBay, Instagram, Yahoo

2) Java

Java is a class-based, object-oriented programming language founded by Sun Microsystems in 1995. Java is one of the most in-demand programming languages today for many reasons. First of all, it is a well-organized language with a strong library of reusable software components. Secondly, programs written in Java can run on many different computer architectures and operating systems because of the use of the JVM (Java virtual machine).

Top Employers: Amazon, Deloitte, Sun, eBay, Symantec Corporation, Cisco Systems, Samsung

3) C++

C++ is a compiled, multi-paradigm language written as an update to C in 1979 by Bjarne Stroustrup.

Due to its high-level compatibility and object-orientation, C++ is used for developing a wide-range of applications and games which makes it a popular and sought after programming language by the employers.

Top Employers: Intel, the Math Works, Microsoft, Qualcomm, Amazon, Mozilla, Adobe, Volvo

4) Ruby

Ruby is an open source, dynamic programming language designed by Yukihiro Matsumoto in 1995 with a key focus on productivity and simplicity .It is one of the most object-oriented languages in the world.

Ruby is a mix of elegant syntax which is easy to read and write and hence it has attracted many organizations and developers.

Top Employers: Spokes, VMware, Accenture, Cap Gemini, Siemens, BBC, NASA

5) JavaScript

JavaScript is an object-oriented scripting language founded in 1995 by Netscape.

Being a client-side language, it runs in the web browser on the client-side with a simplified set of commands, easier code and no need for compilation.  JavaScript is simple to learn and it is used in millions of web pages to authenticate forms, detect browsers and improve design.

Top Employers: Microsoft, Sales Force, IBM, Yahoo, Dell

6) C#

C# is a compiled, object-oriented language developed by Microsoft.

It is highly used on Windows platform and labelled as the premium language for Microsoft .NET framework. C# is known for strong typing, procedural and functional programming discipline which is the reason it has acquired so much popularity.

Top Employers: Microsoft, HP, Digi-Key Corporation, Allscripts, Intel

Those are the top 6 programming languages which are in great demand among Swedish developers.

And one more thing: remember that opinions are like noses, everyone has one and they all smell 😉 If you disagree, please feel free to email me or write your own opinions in the comments.

 

Kate Kviatkovskaya

Kate Kviatkovskaya

Business Development Manager

E-mail: Kate.Kviatkovskaya@altabel.com
Skype: kate.kviatkovskaya
LI Profile: Kate Kviatkovskaya

 

altabel

Altabel Group

Professional Software Development

E-mail: contact@altabel.com
www.altabel.com

The IT world is constantly forging ahead. There already exist several dozens of programming languages and software technologies. At the same time to choose the right thing for a specific project is not an easy thing to do.

Every technology has its own advantages and disadvantages. Hence, if you want to choose a certain implementation, which will be effective for both-development and its further support, you need to consider following issues: project scalability, its tasks and timeframes.

Large-scale projects (high load systems)

For big and high load systems (more than 3000 queries per sec, beginning from 10000 database tables) it is necessary to choose the technologies very comprehensively, as it will influence the general project productivity and security.

There are 4 suitable languages for the backend: Java, NodeJS, PHP and ASP. Though it’s better to use Java, as it allows achieving effective work speed, and gives the possibility to support hyperthreading and refacoring. Moreover, Java is one of the best fit from the point of view of development speed – there are plenty of handy frameworks.
It is better to remember, that NodeJS is a bit difficult to use when it comes to complicated calculations. Nevertheless, it helps to provide an easy project scalability and processing speed.

For the frontend it is better to use JavaScript and HTML. JavaScript makes any calculations much faster, while Flash copes better only with rendering, and HTML5 is not supported by all tools yet. That is why standard (as it may seem for many developers) suite of HTML and JavaScript is the best option here.

When it comes to high load systems, one should remember about extensibility, because it is one of the problem developers face to most often. Hence, it is necessary to think over the work layout with a database in details. For big projects it is better to put away relational databases, and turn attention to non-relational models, such as MongoDB и Redis. It is possible to use CouchDB as well.

It is relational bases that place a limit on the projects and do not give an opportunity to be extended easily. Non-relational models have a completely different structure: instead of SQL-queries API are used.

Middle-scale projects

While working on middle-scale projects (1000-3000 queries per sec, 2000-10000 database tables), i.e. not too load, but not home pages either, it is possible to use Java and PHP. In this case NodeJS will not give such attractive results as in high load projects.

Besides HTML and JavaScript, for the frontend it is allowed to use HTML5 and Flash as well. Nevertheless, it is necessary to be very careful here. The notion of middle-scale project is quite vague, thus, one should to draw upon the project tasks. If the question is about a small graphic maintaining, then probably it will make sense to replace Flash by the last HTML version (HTML5) together with JavaScript. In case the project needs detailed rasterizing and full script of graphic action, then Flash would be the best solution.

Databases can be both relational and non-relational. Everything depends on the further project development. If it is planned to grow rapidly, it is better to use non-relational models MongoDB or Redis. If a too big scalability is not required, Oracle will perfectly fit. The point is that in spite of being relational, Oracle is used in many projects that have a potential to scalability. At the same time there no extension problem emerge, even if several servers are used.

Small projects

When the question is about small projects (less than 1000 queries per sec, 2000 databases), it is essential to put away all the complicated things, that present in high load systems. Consequently, PHP, Ruby on the Rails (this framework allows fast development), Erlang are best for development here. No doubt Java can fit as well, though it would be much faster and easier to use PHP or Ruby.

For the frontend it’s better to practice Javascript, HTML5, HTML, Flash/Flex. Most often small projects do no presuppose a big growth, that is why MySQL or PostgreSQL are better to be chosen as a database. Oracle may turn to be too bulky and unprofitable for the client, while MongoDB and Redis will not be effective. The thing is that despite growing popularity of non-relational databases, the smallest mistake in their usage can entail serious consequences. In this context relational models are much easier. Hence, while working on small projects it is better not to spend time and practice relational models, such as MySQL and PostgreSQL.

To sum up everything above said, Java, NodeJS, PHP, ASP + JavaScript and HTML + MongoDB or Redis are better to be used while developing high-load projects. For middle-scale projects- Java, PHP + JavaScrit, HTML, HTML5, Flash + Oracle, MongoDB, Redis. For small ones – PHP, Ruby on the Rails, Erlang + JavaScript, HTML, HTML5, Flash + MySQL, Postgre SQL.
Anyway, apart from the project scalability it is essential to consider its potential. The reason is that the problems start after the project growth, when developers face to inability of an adequate project transfer to other servers and workload distribution. Besides, it is important to keep in mind the project tasks. It is highly possible to turn out, that what is popular today will not be effective for a specific project.

You know that my opinion is not the ultimate truth 🙂 I would be glad to read about your experience of using languages, databases while working on different projects!

Kind regards,

Nadya Klim

Business Development Manager

 

altabel

Altabel Group

Professional Software Development

E-mail: contact@altabel.com
www.altabel.com


%d bloggers like this: