Altabel Group's Blog

Archive for the ‘Programming languages’ Category

 


 
Go was created in 2007 at Google as an experimental project. It was designed to be a fun language and at the same time it is productive, practical, expressive and powerful. Google Go can be considered the result of a rather conservative language evolution from languages such as C and C++.

Node.js is an increasingly popular platform that is built on fast, JavaScript-based runtime: V8. V8 is a JS virtual machine created by Google that is designed to build scalable, networked applications. It compiles JavaScript code to native machine code, using some complex optimizations. V8 also does the memory allocation and garbage collection of JS objects.

Recently, there have been criticisms about the value of using Node.js in a high-performance, networked application environment, and some developers have moved to the Go language. Not only developers but also some well-known companies, such as Google, DropBox, Docker, DigitalOcean and more have picked up Go for some of their projects.

Certainly, Node.js is still used by a much wider audience, has more modules, is easier to use and isn’t going anywhere anytime soon. However, Go is gaining more and more popularity. In this article we will take a look at the differences between Node.js and Go to reveal the strengths and weaknesses of each environment.
 
Performance

Due to JS’s dynamically-typed nature Node cannot reach the raw performance of CPU or memory bound tasks that Go can achieve in many tests. Go is about 3 times faster and more lightweight than Node.js in a production environment. Not to say that Node.js is slow, it’s fast enough for most use cases, but when you do hit a limit, Go can still go a long way.
 
Concurrency

One of the language’s peculiarities is the presence of goroutines, functions that can be executed concurrently with one another.

These can be launched simply by using a keyword. Go runtime contains a scheduler that coordinates the execution of an arbitrary number of goroutines on an arbitrary number of system threads (the M:N model). In this way it is possible to carry out rapid context switches in order to take advantage of all CPU cores. So, in a hypothetical web application written in Go a single process will be able to continue serving requests even if one of these is trying to execute a blocked operation.

Node suffers from JavaScript’s less than elegant concurrency support using the event-callback mechanism. However, for a lot of applications working with JS promises and the coming async generator support (also called “semi-coroutines”) will suffice. Something like the Koa framework is already supporting the async generator approach in Node.
 
Ease of use

Node.js is a much simpler platform to use, especially if you are already a JS developer. For Go you will need to learn some new programming concepts, such as: coroutines, channels, strict typing (with compilation), interfaces, structs, pointers, and some other differences.
 
Ecosystem

Both platforms have pretty active and growing ecosystems, but as Node.js has been around much longer and certainly it has a broader community of users and more tools that make certain software projects a lot easier and/or cheaper to implement.

Go is a younger language, however, it dynamically develops: the number of standard Go packages is growing steadily, currently at over 100, and the Go community packages can be searched easily.

In conclusion, I’d like to say that there is no ideal language/framework/tool that could be used by everyone otherwise there would be only one programming language and there wouldn’t be such debates as Go vs Node.js:) Every language is tailored to be used for specific use cases. But we need to admit that there are some things Go performs better in, at the same time it lacks some characteristics that Node.js provides.

And what advantages and disadvantages of using Node.js and Go have you come across?

 

Anna Kozik

Business Development Manager

E-mail: Anna.Kozik@altabel.com
Skype: kozik_anna
LI Profile: Anna Kozik

 

altabel

Altabel Group

Professional Software Development

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

Internet of Things(IoT) is extremely broad phrase, and can mean a great many different things. But it does not change the fact that each day more and more devices all over the world are being connected to the Internet. At that rate, Internet of Things (IoT) development projects are gaining popularity to say the least.

It is definitely the trend. This brings up a question: what programming languages are the most popular for IoT project? Well, according to the Eclipse Foundation survey, Java, JavaScript, C, and Python are the top four programming choices for developers who are building IoT solutions. Let’s look into them!

Java

Though some people question the use of Java in IoT it is not surprising to see Java as being the most popular among developers who are working on IoT solutions. The practicality of the statement “write once, run anywhere” still predetermines the choice in a great measure.

Java advantages are apparent. It is an object-oriented and platform independent language. Thus coding and debugging can be done on desktop and moved to any chip with a Java Virtual Machine afterwards. Therefore code can be run not only on places where JVMs are common (servers and smartphones), but also on the smallest machines. Minimum hardware dependency is a huge plus. This also means that Java is great from an economic standpoint: devotion to Java coding can pay back across various platforms.

Besides, by now Java has attracted an active community of millions software developers and is being taught as one of the primary programming languages in the majority of engineering degree programs. Consequently, finding someone skilled in Java programming should not constitute a problem.

Last but not the least, maturity and stability of this language make it even more attractive. When there are devices that are going to be remotely managed and provisioned for a long period of time, Java’s stability and care about backwards compatibility become important.

It should be taken into consideration thought that your choice of IoT platform should support Java. You should make sure available hardware support libraries should have control functions according to your requirements too.

Javascript

Combining some knowledge from other languages JavaScript has not only proven itself worthy on both the client and server side of the web, but it also has a huge potential in the growing Internet of Things domain.

The main difference between Javascript and Java is that JavaScript is a scripting language that has a range of existing libraries, plugins, and APIs, and many of them can be used to create complicated IoT apps easier and faster. Instead of building a range of new libraries and plugins, developers are free to reuse and further develop existing solutions around the web for absolutely new implementations.

Remarkably, applications that listen for events and respond when events occur are a strength of a JavaScript. Effective and secure communications and interactivity are of paramount importance in the IoT, and there are great systems for dealing with requests and events. For example, Socket.io maintains an open connection between the server and the browser and thus enables the server to push updates to the browser as they happen. This gives you a chance to see the changes in the IoT network without a page refresh. By providing real time event based communication across multiple devices Socket.io really comes in handy.

Additionally, much of the Internet is built on JavaScript and huge portion of the web functionality is enabled through JavaScript. Connecting up the web to our IoT devices and using the language that web pages and web apps already speak lead to simplicity in management.

It’s important to mention however, that Javascript would be a bad choice for lightweight embedded controllers.


C

Created to program the telephone switches C programming language has almost monopolized embedded systems programming. Its proximity to machine language makes it impressively fast.

C can create compact and faster runtime code. Still it should be noted that runtime speed isn’t the primary aspect of development to consider. Development speed should also be takes into account (and other languages may be much more efficient in that).

Another vote for stems from the fact that majority of the modern languages follow the syntax of C, which means that it is easy to learn and effective in accomplishing advanced tasks.

As both completing complex tasks and finding developers with extensive experience in C is relatively easy, its applicability to IoT projects speaks for itself.

Still, there are some drawbacks of C that make it less preferred in today’s development world, e.g. poor data security and no run time checking mechanism.

Python

Although Python originally is widely chosen for Web development, it has significantly gained popularity in the IoT coding arena for the past few years. Such huge advantages as its flexibility, writability, error reduction, and readability contributed to that greatly. Distribution of compact executable code is easy. Working in programming teams is easy. Known as organized and neat, its elegant syntax is great for database arrangement. Sure, Python is a good choice for building applications that take data, convert it into any sort of a database format and draw upon the tables for control information. Python also has libraries for all 3 main IoT protocols such as TCP/IP, Bluetooth and NFC.

Additionally, IoT projects involve lots of data analytics and Python has rich modules for that.

Finally, major IoT hardware platforms and micro-controllers, e.g. Arduino, Raspberry PI, Intel Galileo, are enabled for interactive communication through Python.

Probably, the main problem for Python is its runtime speed, especially in comparison to C. Still there is a number of ways to optimize the code so it runs more efficiently.

Steady increase in popularity of Python for IoT is evident.

So which programming language is the best for IoT?

No definite answer, guys… All the above languages influence the IoT space up to an extent. However, the preference of language today depends on the end use of the app, product or service you want to create. What do you think? I’d love to hear your thoughts in the comments!

 

alexandra-presniatsova

Alexandra Presniatsova

Business Development Manager

E-mail: Alex.Presniatsova@altabel.com
Skype: alex.presniatsova
LI Profile: Alexandra Presniatsova

 

altabel

Altabel Group

Professional Software Development

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

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

Programming cells may soon become as easy as programming a computer. Just as computer software designers create programming for computers, scientists have created a programming language that allows them to design DNA-encoded circuits that can give new function to living cells.

Using this language, anyone can write a program for the function they want, such as detecting and responding to certain environmental conditions. They can then generate a DNA sequence that will achieve it.

“It is literally a programming language for bacteria,” says Christopher Voigt, an MIT professor of biological engineering. “You use a text-based language, just like you’re programming a computer. Then you take that text and you compile it and it turns it into a DNA sequence that you put into the cell, and the circuit runs inside the cell.”

In the new software — called Cello — a user first specifies the kind of cell they are using and what they want it to do: for example, sense metabolic conditions in the gut and produce a drug in response. They type in commands to explain how these inputs and outputs should be logically connected, using a computing language called Verilog that electrical engineers have long relied on to design silicon circuits. Finally, Cello translates this information to design a DNA sequence that, when put into a cell, will execute the demands.

dna

The good thing about it is that it’s very simple, without many of the intricacies often encountered in programming.

“You could be completely naive as to how any of it works. That’s what’s really different about this,” Voigt says. “You could be a student in high school and go onto the Web-based server and type out the program you want, and it spits back the DNA sequence.”

For now, all these features have been customized for the E. coli bacteria, one of the most common in studies, but researchers are working on expanding the language to other strands of bacteria.

Using this language, they’ve already programmed 60 circuits with different functions, and 45 of them worked correctly the first time they were tested – which is a remarkable achievement. The circuits were also strikingly fast, and the whole process promises to revolutionize DNA engineering. Before, it could take months or years to design such a circuit. Now, it can be done in less than a day.

Dr. Voigt’s team plans to work on several different applications using this approach — bacteria that can be swallowed to aid in digestion of lactose; bacteria that can live on plant roots and produce insecticide if they sense the plant is under attack; and yeast that can be engineered to shut off when they are producing too many toxic byproducts in a fermentation reactor.

What do you think about this rapidly developing revolutionary computer industry? Can it replace drugs and medicine in future? Can it help to cure cancer and AIDS? Will it make a living cell immortal?

Please feel free to share with us your opinion and thoughts 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

Java brings a lot of popular and user-friendly frameworks, content management systems and servers that help to simplify the application development process, website management process and much more irrespective of the size and complexity of the project. When it comes to CMS, Java possesses a host of CMSs that have been highly recognized in the market, but one CMS that has gained great popularity and attention from the developers and companies across the world is Magnolia.

Magnolia is an open source content management system which delivers exceptional simplicity on an enterprise level, combining user-friendly usage with a standards-based and flexible Java architecture. Companies such as Airbus Group, Al Arabiya, Avis and Virgin America use it as the central hub for their web, mobile and IoT initiatives. Founded in 1997, Magnolia is a privately-held company headquartered in Basel, Switzerland. The company has offices around the globe, and customers in over 100 countries.

Making a good CMS to cater the needs of the clients is never an easy task, and the developers Magnolia knows this thing better. Hence, Magnolia brings some of the much needed features and functionalities for the enterprises.

• Magnolia comes with a smart cache, a built-in clustering capabiliy and distributed deployment architecture that easily decouples authoring from publishing and the possibility to develop load-balanced public servers to bring more throughput and availability.
• It also offer code highlighting for the designers & developers, easy integration of 3rd party frameworks, extendable workflow, J2EE compliance, RSS generation & aggregation and more for the customization.
• When it comes to designing, it brings standard-based templating in JSP and servlets, unlimited page and component design, Freemarker as a template engine, custom tag library to speed up templating and pluggable templating engine for the designers.
• It brings Open APIs, advanced caching strategies, unlimited scalability, clustering & load balancing, transactional activation and tons of other performance related features & functionalities for the enterprises.
• From the security point of view, Magnolia brings flexible user permissions using role-based user management and distributed architecture, which is a need of today’s enterprises.
• It also enables team work through concurrent editing, deletion, address book, workgroup collaboration and some other features.
Apart from all these, Magnolia also enables search engine optimization, content tagging, configurable workflow, content versioning, social media integration, multilingual support, multi-site management, mobile publishing and tons of other enterprise-scale functionalities.

magnolia

However, like any other technology or platform, Magnolia also has some advantages and disadvantages. Let’s take a look at each of them:

The Pros
• It’s an open source.
• User friendly, easy to use for Administrators/Content Editors/Authors
• Good set of standard components in the standard templating kit (STK)
• Very flexible, almost anything can be customized
• Vast set of open modules for many additional features
• Leverage from page-based site or navigation.
• It utilizes installer, but the WAR files can be used to redeploy it to some other place.

The Cons
• Steep learning curve
• Inconsistent or lack of documentation
• Configuration via JCR-Tree can be error-prone and not very transparent
• Versions -4.5, 4.5+ and 5 all have shifts in paradigms
• Versioning and collaboration

All in all, Magnolia is a very promising CMS that integrates well into an enterprise java stack. It is predominantly suited for medium to large businesses where processes need deep integration and customizations. With regards to small businesses, Magnolia might be somewhat of an overkill.

How about you? Did you have a chance to work with Magnolia CMS? What is your attitude to it?

Please feel free to share with us your thoughts and experience 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


%d bloggers like this: