Altabel Group's Blog

Posts Tagged ‘Python

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

 

“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

We are often asked about which iOS game engine to use. It is believed that most companies are looking for a free game engine so here is a comparison of the different open source iPhone game engines that actually have apps out there.  Also these game engines now support the iPad.

Sparrow Framework

The Sparrow Framework is a very lightweight 2D game engine created in Objective-C.

It was built from ground up for iPhone, iPad and iPod Touch. You can easily integrate it with your existing UIKit apps, access all iOS APIs directly and benefit from native performance.

If you have already worked with Adobe Flash or Starling, you will feel right at home: Sparrow uses the same concepts and naming schemes. Even if you’re coming from a different background, you’ll get the hang of it quickly, because everything is designed to be as intuitive and easy to use as possible.

The game framework includes all the necessary features you’d require for creating a basic 2D game such as easy animation, and a sound engine.

Cocos2D IPhone

The Cocos2D iPhone game engine is a port of a game engine originally created in Python and converted to iPhone Objective-C.  As you can tell from the name, Cocos2D is designed for 2D games, that being said, although the engine is in a 2D world, the engine includes a growing collection of high quality 3D special effects.  Cocos2D has also been released on the Mac so you can ease the release on 2 platforms.

Cocos2D is the first engine to check out, while many may be turned off by the engine not supporting a 3d world, if you look at most of the top iPhone games the gameplay is 2D, in fact the iPhone’s touch screen controls can make it difficult to operate in a 3D world.

The engine provides more examples than any of the other engines out there because of the large community.

iSGL3D

iSGL3D (iOS Scene Graph Library) is a 3D framework for the iPhone, iPad and iPod Touch written in Objective-C, enabling the creativity of developers to flourish in a 3D world without the complexities of OpenGL.

With its rich set of features, iSGL3D provides the necessary tools to develop 3D applications in an incredibly short time frame, even with a minimum of experience in 3D graphics. The principal behind iSGL3D is to make construction and manipulation of 3D scenes as simple as possible for a developer.

With a single line of code you can add a 3D object whether it is a simple primitive, a sprite (or particle) or your own imported asset. Properties on these objects allow you to modify their appearance, position, rotation and more very simply. You can add containers too to group objects and manipulate them together. In a short period of time you can build up a complex 3D scene.

Moai SDK

The Moai SDK is an open source 2D game engine. It designed more for people who know what they’re doing. While it includes the ability to start developing a game immediately from a downloadable binary, it only supports using the FreeGLUT library on the desktop. It is designed in such a way that it expects the developer to be able to create the windowing system themselves.

The main language used with Moai is Lua. Most of the time you shouldn’t need to use C++ to extend the base engine, but the capability to do so is there. The documentation for the Lua codebase is kind of weak however, so you should be ready to do some searching to find out how to use various capabilities. You can create your games with Moai on both Windows (Visual Studio) and Mac (Xcode).  In order to
submit your games to the iOS app store you will need to do so with a Mac.

Oolong Engine

The Oolong Engine is written in C++ with some help from Objective-C. It will help you to create new games and port existing games to the iPhone, the iPod touch and the iPad.

Oolong provides support for a wide variety of features and provides excellent performance.

Haxe

Haxe is a multi-platform language that most notably compiles to SWF and has been used in many Flash games.

Galaxy Game Engine

The Galaxy Game Engine is a very promising engine with an extensive feature set. This is a BSD licensed 3D engine that includes some very useful tools such as a level editor, terrain editor, model viewer, particle editor, and shader IDE.

Sure, we may make this list longer, but let me stop here. The most important thing, which I’d like to notice, is that you should select the engine which fits your project needs and suits your purposes in the best way.

And what do you think? To what engine would you give your preference?

Feel free to share with us your thoughts!

mk

Marina Karabanova
Marina.Karabanova@altabel.com
Skype ID: m.karabanova
Business Development Manager (LI page)
Altabel Group – Professional Software Development

At one time, universities and colleges were institutes of higher learning for those who were passionate about acquiring knowledge. Today, education discussions tend to to center around how much individuals can make with their degree. Thanks to the Internet there are still places that offer open learning initiatives designed to help a new generation of technologists succeed.

Let’s start reviewing the free online courses to grow your tech skills.

1. Data visualization

Those who can take different types of data and visualize it in a way that helps provide clarity and insight are in demand. The big data machine is picking up steam. In fact, according to recent data from Dice, big data skills rank highly among those most in demand by employers.

This four-week free course offered by the University of Illinois through Coursera provides a foundation in elementary graphics programming, human perception and cognition, basic visualization, visualizing relationships and information. The course is offered from July 20th – August 15th, 2015 and requires roughly 4-6 hours per week of study time.

2. Programming for everybody (Python)

This beginner’s course is a gentle introduction into the world of Python programming. It’s meant to be a first programming course, and as a result the focus is more so on understanding the concepts. There are no prerequisites and no advanced math skills are required so if you’ve ever wanted to learn how to code or are just interested in the simple intuitive programming syntax that Python offers now is the time to take advantage of this opportunity to learn.This 10-week free course is offered from October 5th to December14th 2015. It requires 2-4 hours a week of study time. All textbooks and resources are free.

3. Begin programming: build your first mobile game

A crash course in programming, this offering from Future Learn aims to teach the beginnings of Java, taking students through the basics of programming by modifying a small Java game (code provided) that can run on your desktop or your Android devices.

Over the seven-week course has started on June 1 , 2015 students will be introduced to the basic constructs of Java that are similar to many programming languages. The course consists of video introductions, on-screen examples, Java game code, downloadable guides, articles and group discussions. It requires roughly four hours of study per week.

You could join the course in progress or register to a new one (date TBA).

4. Introduction to Linux

Have you always wanted to learn more about Linux but never had the extra cash to inveset. This course offered through edX might be just what you’re looking for. The Linux Foundation partnered with edX to offer this free Introduction to the Linux that covers familiarity with the graphical interface and command line as well as a look at all the major Linux distributions. The course gives an over view of the day to day working environment of a Linux administrator and covers pertinent tools and skills.

The designers of the course estimate that a total of 40- 60 hours of study are required to accurately cover the material. Students have the option of auditing the course, at no cost. You get access to course materials, tests, assignments and activities. Those who audit and complete the course will receive a certificate of achievement, but for those wanting to add it as a bullet point on their resume there is a verified certificate available for a fee.

5. Google Analytics Academy

With the proliferation of the Web, online shopping and social media marketing, competition for organic search traffic has gone through the roof. Understanding your website’s analytics can help you make better data-based decisions while at the same time improving the customer experience. Google knows this and would love for you to use its product, Google Analytics. So much so that they’ve created this online learning center that offers courses to help you better use the hidden data located within your site.

The courses highlighted here are all free and are good examples of how the digital revolution is bringing education to the masses around the globe.

 1176dce

Romanas Lauks
Romanas.Lauks@altabel.com
Skype ID: romanas_lauks
Marketing 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

 

Over the years dynamic languages such as Python and Ruby have become cherished by startups. As for .Net it is more rarely heard to be used by startups. That’s interesting indeed, because this platform is definitely bigger than most of the popular ones.

So I wonder why a platform as widely adopted and supported as .NET isn’t more visible in startup culture. Let’s try figuring out the main arguments in favor and against making .Net a startup technical choice.

1. Community culture

 Some people say the main reason is the culture of the .NET community itself, not anything specific to the platform. Being centered mostly around the needs of enterprise market .NET developers’ concerns are often regarding supporting legacy systems, building enterprise architectures, large systems for supporting business processes. This implies solving problems which are not so relevant for startups at least at their initial point.

As for members of the startup community, they fuss over different issues – concurrency, experience design, supporting multiple clients and browsers, etc.

As a result the startup community and the .NET community don’t overlap as much as they do for other technologies. That’s why startup founders don’t get much exposure to .Net and don’t think of it as an applicable tool for their purposes. The same way many .Net developers who want to work for hot startups don’t have as many opportunities to do so unless they abandon the platform for a more startup-friendly one or start a company themselves.

So platform doesn’t always dictate its use – that’s people who make the choice. Enterprise and startups aren’t mutually exclusive – they’re just different stages in the evolution of software, and there’s no reason why the startup community shouldn’t look at .NET as an attractive starting point for a new business.

2. Startup tech compatibility

A startup is a risky venture with no guarantee of success. So tech startups seek advantages in order to succeed. Hence startups take what big enterprises consider risky bets on technology. This objective can be achieved by using technology that is popular in startup environment.

Many features of .NET, facilitating the productivity of big companies, are not always useful to startups. There is too much choice of implementation methods. If anything, web startups are looking to have this choice taken away – their technology choices come from the subset that is built for the web.

Also it is said that innovation is quicker with other ecosystems which have a bigger set of libraries and tools. As for .Net there are a few open source projects however most of them are pretty much an implementation of concepts that have already been implemented for a while in the Java world, for example.

3. Open source vs proprietary

Although many startups don’t mind paying for tools and services, most of them still pick things based on cost. For a long time the “enterprise” level tools, services, databases, etc were hardly affordable by startups. That’s why startups adopt so much open source.

It’s also hard to justify the use of proprietary software from a business perspective. If you want to be acquired it is wise to develop your product using an open stack rather than Microsoft’s.

However luckily for many startups Microsoft saw a huge value in giving their stuff away to startups and startups have benefited greatly. Microsoft has been running their Bizspark program for several years, which eliminates most of the startup costs normally associated with employing a .NET framework. To get into the BizSpark program you just need to get checked by BizSpark team if your startup is eligible (developing a real product). Then you’ll get free licenses to basically every product they make, including SQL Server, and a free MSDN gold subscription, for 3 years. They figure 3 years is long enough for you to get going so after that they want you to pay for new licenses. The great part is that they let you keep the licenses you’re already using. So Microsoft has basically taken the cost factor completely out of the equation for new startups.

4. Velocity vs performance

Some people say that it’s all about the velocity. If you agree with an assumption that a startup goal is to find a niche vs build a product, then the goal of a startup is to learn about the market, customers, and product needs as quickly as possible. Python, Js, Ruby, etc allow you to iterate quickly without a lot of infrastructure and boilerplate. However a company that has already has a market has a little different goal, for them the objective is to build a stable product that they can maintain.

Some people say that .Net is not suitable for quick changes. This is a pretty outdated view of C# these days, it’s actually fairly easy to write extremely terse code with. As an added bonus refactoring is so incredibly easy compared to JS, Ruby, Python, etc. that it’s ideal for rapidly switching directions in code as you can refactor so fearlessly without being slowed down by massive amounts of tests. Unfortunately what’s bad about .Net is the tooling and the supporting ecosystem.

Python is much better suited to quick prototypes that can be fleshed out into a reasonably reliable product without too many headaches. The key difference comes when you have to change features mid-stream. The lack of strict typing and interfaces means you can add, change, and remove features much quicker than C# for example. On top of that, you just write fewer actual lines of code to get the same thing done, although sometimes readability can suffer if you get too concise. There is a price to be paid with Python and Ruby though and performance is the biggest one.

5. Team and project size

The team and project size always matters. So when the solution is being built with a small team, then it is easier to use something like Python. Obviously the goal is to be fast to develop in and have a bunch of libraries to be used. On the other hand when building something with a big team, you feel like using something like C#. In this case it keeps it safe to develop in and easy to catch mistakes. Any optional documentation provided by a developer is incomplete. On the contrary the quality level of the available .Net documentation is outstanding.

However if the company is starting as very small at the initial point, it hopefully grows and builds up quite a sizeable codebase by some point. Python, JS & Ruby are fine for small programs but anything more than that and they become their own enemies because the programs they make are quite brittle.

6. Scalability

The common opinion is that .Net scales well.So, if your startup does make it, you’ll probably have a much easier time scaling the .Net stack than you would with say Ruby or PHP.

Conclusion: it’s all about stereotyping

Eventually, I found different opinions on my question of .Net being not so popular with startups such as “platform lock-in,” “no open standards,” “licensing costs.” Sure, these are issues preventing many developers from adopting .NET in the startup space, but not enough to bar all of them from using it. Most of the arguments are just stereotypes that can be dispelled under closer examination.

All languages have strengths and weaknesses. For a startup, you need to do due-diligence and research what the right language to use for your idea will be because recoding in a different language can get costly.

So do you use .Net in your startup projects? Please share your feedback and experiences with us.
 

Aliona Kavalevich

Aliona Kavalevich
Aliona.Kavalevich@altabel.com
Skype ID: aliona_kavalevich
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


%d bloggers like this: