New Solutions In Programming and Their True Approach
The question about whether we actually need another programming language still stands unanswered. Among all the choices we have in object-oriented, dynamic, functional or scripting languages, the developers choice always falls on the unified ones. By the same developers’ feedback – we get new alternatives to old solutions. Is it exactly right, though? We tried to review a couple of the most remarkable ones in modern IT. What we see, is that new languages emerge with frequency, and each of them is surprisingly promising even when applied to large IT vendors. But maybe just not now. Let’s see at least, what are the perspectives of the four newest languages so far.
Apple unveiled their new programming language Swift at the last World Wide Developers Conference, promising that this language is more efficient and much faster than their current choice – Objective-C. Swift is the refined extension of Objective-C that builds atop the LLVM language compiler. It was loudly declared that Swift will lower the barrier and open the doors for the newcomers. From the other side, Apple more and more splits with the rest of software development companies. They take the development further away, defining their own rules, despite the fact that most coders would want to build applications that can run on all devices.
The first big advantage compared to the oldie Objective-C is that Swift gets rid of unused information in the memory of the device, and developers no longer need to deal with memory management on their own.
Compared to Objective-C, Swift is easier and more helpful in designing and testing. It is more compact in terms of coding but is hard to be interpreted between developers due to a lack of commenting.
What you need to know
- The most important thing to know in general is that Swift is the best for developing iOS applications. But it doesn’t mean that it has a chance to outflank Objective-C. In order to develop an iOS application, you need to work with CocoaPods, libraries and frameworks – all written in Objective-C.
- Apple has made an effort to make Swift safe in a variety of subtle ways.
- Apple is still working on finishing this product.
- Swift offers type inference, like Scala, Opa, etc.
- If strings drive you crazy in Objective-C, then Swift is great for you because it handles them more easily.
- Once Swift becomes popular, it will make porting iOS applications to Android really hard.
The other thing Swift offers is that it removes the need to spend time defining types of variables, as there is a new feature called ‘inferred typing’. It is also easier to build little pieces of code that may collect information on behalf of your program by using a concise closure technique. The other interesting step Apple took is a more visual approach in coding where developers may instantly see the results of coding while typing it, they called this feature ‘interactive playground’.
Despite all these features, Apple’s new kid, Swift, is not that different from other languages. But it brings Apple to the forefront, standing right next to such programming languages as Python or Ruby. From that perspective, Apple may offer more and more benefits for developers to start shifting towards Swift coding, or use it alongside Objective-C, for now.
What Developers say about Swift
- “The link says that Swift “allows you to run your Swift Code right alongside Objective-C and C code in the same application.” Hopefully, that also includes some interoperability with C++. If so, then you can write iOS and OS X-specific code in Swift while still using a shared C++ codebase.”
- “Not being able to link against the existing corpus of C/C++ and Objective-C would not only make the language a non-starter for developers, it’d also make linking very bizarre. I actually don’t see an easy way to implement Swift without making it link against already-existing code in both directions, and LLVM was specifically mentioned. So it’s ostensibly using the same toolchain.
I’m almost positive Swift will call C/C++/Objective-C and vice versa. Otherwise, it’d be really unappealing to developers. Plus, that’d mean Apple would have to reimplement all the C APIs in the SDK.”
- “Will be interesting to see how new devs cope with needing to be conversant with both Swift and ObjC. There’s always been a bit of archaeology needed (Carbon APIs for AddressBook etc., pre-ARC libraries), but this may be a bit bigger.”
Last year, Facebook faced the problem of needing more servers to run the website and at the same time, it was hard to manage the overall code. They found a solution by running all the PHP code on their new creation, a virtual machine called HHVM. Soon after the company introduced Hack which is basically the new version of PHP that runs on HHVM and allows developers to use both static and dynamic arrangement. Moreover, it gives the user the ability to shift between dynamic and static code and implements benefits from each of the arrangements. Unlike other static languages, it doesn’t slow the development process, allowing to run the code without compiling.
It’s interesting that the most attractive side of Hack would be the similarity to PHP – how easy it is to move operations from one language to another.
Hack was developed only for the HHVM platform, and designed to be extremely friendly with PHP, more to say it looks like PHP at first sight.
What you need to know
- It’s way too soon to say that Hack will kill PHP.
- Hack code is not backwards compatible with PHP.
- Hack has strict typing and runtime enforcement of return types.
- Hack is dependent on Facebook’s continued participation and investment.
- Yep, the name Hack itself is very inappropriate in the sense of looking for the information and help on the web.
The most widely used language developers would shift towards Hack because of its next level PHP possibilities, and who cares if it’s just the new name for the same old thing.
Hack is open-sourced and has a big number of tools. It gives the easiest possibility for automatic conversion of your codebase. Hack is already used for running Facebook, and shows that the biggest social network easily traded PHP for the new language, so there would be no issue with the other projects. Being used for such a mastodon of the internet, it would also be suitable for smaller projects, so the smaller code bases will cause no problem to migrate.
What Developers say about Hack
- “Hack hits the sweet spot of both. Wiring the Hack type checker into vim was really revolutionary for me — having both the immediate feedback of the type system for all the silly bugs that I was writing, along with the fast reload/test cycle from PHP, is great.”
- “Unlike PHP arrays which have value-type semantics, Hack Collections were designed to have reference-type semantics (matching how all other objects behave in PHP 5 and above). There were multiple reasons for this design choice, but one of the main reasons was to make the use of references (“&”) largely unnecessary for codebases written in Hack.”
- “Hack may be a great language but I imagine it would be a pain to work with when you run into an issue and want to google: hack example Even if hack becomes the #1 language I doubt that will return useful information. Google is probably my most important development tool and you’ve completely neutered it.”
There is another new open source programming language, that promises a superb coding process and those efficient results. Go, the language that steps on Java and suits modern computing, particularly cloud development. Originally it was thought of as an improvement for C++, but Go designers came to the conclusion, that improving operations with C++ control structures is impossible without making it more cumbersome on the other end.
Go is awesome thanks to its concurrency. The developer would no longer be stuck into single-thread situations. It’s got the same static execution speed as C, it allows you to operate the modern patterns in coding. Even the actual syntax of Go is very similar to C. Keeping memory usage to a minimum it frees you from possible overloads.
What you need to know
- Go still has some growing up to do, alternatives like Ruby and Node.js have more comparatively complete ecosystems.
- Go fits better in back-end services, back-end processes, and data analysis, at least for now.
- Creativity, Simplicity, Minimalism – feeling like is that what you were looking for? Then go ahead and try Google Go.
- Go is developed as multipurpose language, so it is targeting Web programming, mobile programming, and systems programming.
- Google Go type system is unusual and needs time to get used.
- Google Go needs to sprout an ecosystem.
It’s got the so-called modern features like ‘garbage collection’ and runtime reflection. There is no hierarchy in the type system, so basically there is no need for defining relations between types. It makes it an object-oriented language, but not type-oriented.
The future is controlled by cloud systems and Google Go was written for the cloud. Go’s execution in cloud architecture makes it literally the best development experience so far. Google Go is still considered an experimental coding language. Yes, it is fast, pleasant to code and it is cloud-oriented, but it still in progress of improving, so some specifications may change. This is the language of the new wave, where the monolith solutions mutate through the modern flow, giving us basically the same experience, but with a modern approach.
What Developers say about Google Go
- “The language itself is very general purpose. There are just a few design decisions sprinkled throughout that were chosen for Google’s situation.”
- “Actually, it solves the problems of most any sys admin who’s had to work with getting dev code into a stable production environment. It’s a really huge strength of Go.
Sadly Go is still really lacking in the 3rd party lib area, though.”
- “I already replaced Python for Go. Almost completely. Go is much easier for me to write (I prefer the C-Like syntax) and not only that but also runs faster. I can use it as a scripting language.
The only problem would be libraries: Python has a hell lot of them, for example, I can’t do all the math things I could do in Python with Pyplot or scikit. But I guess it’s only matter of time.”
Avail was released to the public just a couple of months ago. It was announced as the language for articulate programming, and it uses a very human-readable syntax, in order to be able to showcase issues in natural expression. Being an open-sourced project, it includes language virtual machine and a standard library. Coding in Avail means that the project will develop a domain-appropriate lexicon that would be leveraged directly to create a solution that is readable for software and domain experts. This is the fusion of a dynamic, modular, unrestricted grammar and infinite algebraic type lattice. For those who experiment with an emerging technology – Avail is the language to assimilate. It was built for accomplishing ambitious tasks in an understandable natural description process.
When you see the Avail code, you’ll be amazed, it looks more like a set of action descriptions than text. And this piece of text will be rich in strict algorithmic methods.
Avail programming language uses Unicode in order to reduce the mismatch between conventional typesetting and programming. It is full of great core features, but as it is a brand new language, it is woefully under-documented and sometimes it is hard to know whether is a certain feature is supported or not. Some domain-specific features like a statistics package or a NoSQL database connector might be not available yet. Though the language promises a solid base as a next big programming tool as Java or Haskell. For now, the development team is actively seeking involvement and investigation.
What Developers say about Avail
Most coders would agree on innovative approach to programming, that Avail gives:
- “I’m impressed: this is very different from any programming language I’m used to (and to make things worse I’m lying in bed at 4AM with insomnia), yet I understand the tutorials after reading them just once.”
- “The ambiguity and inconsistency of English make PHP look like a well-designed language. People are good at making sense of that, computers are not. As a language for expressing algorithms, English is painfully obviously inadequate but this idea never dies.”
- “The “linguistically verbose” parts depend heavily on Avail’s unique deep, strong typing, its type-assisted parser, a simple way to modularly nudge the grammar (called grammatical restrictions), and a fully modular syntax. Those features conspire to make Avail’s grammar as uniquely rich as it is without succumbing to catastrophic complexity. I urge you to take a deeper look, specifically at the punctuation-like operations, to really get a feel for our philosophy and practice of language.”
- “So essentially it takes the normal headache of what to name functions and variables, and extends it to the entire language”