Altabel Group's Blog

Posts Tagged ‘programming language

As computers (and sensors) get smaller, smarter and connected, our everyday objects, from clothing to lavatories to cars, get more intelligent. By so doing embedded software is essential to the operation of today’s smart devices.
 

Embedded systems control many devices in common use today. Ninety-eight percent of all microprocessors are manufactured as components of embedded systems. Manufacturers ‘build in’ embedded software in the electronics of e.g. cars, telephones, modems, robots, appliances, toys, security systems, pacemakers, televisions and set-top boxes, and digital watches, for example.

Embedded systems are not always standalone devices. Many embedded systems consist of small parts within a larger device that serves a more general purpose.

 
Specifics of embedded development:

  • The development of embedded systems requires a good combination of industry knowledge, up-to-date technology expertise and excellent quality and project management skills.
  • Code is typically written in C or C++, but various high-level programming languages, such as Python, JavaScript and even the Go programming language, are now also in common use to target microcontrollers and embedded systems. However the complexity is not in the lines of code, most of the times, since embedded software is more focused towards controlling and managing the system (or hardware).
  • Programmers spend nearly all of their time using their embedded software development environment, which is an integrated collection of software development tools that manage the entire embedded software development process: analyzing, designing, documenting, writing, compiling, debugging, testing, optimizing, and verifying software. The choice of an embedded software development environment is the most important determinant of the productivity and effectiveness of programmers.
  • Today’s embedded systems development spans sensor, device, gateway, and cloud. This dramatically increases the complexity of development, troubleshooting, and fault isolation.
  • Unlike smartphones and personal computers, which sells in millions, most embedded products such as ECG machines, PoS machines, Laboratory and Test equipment, Ticket vending machines, etc. have low sales volume.
  • Furthermore, the product life of embedded devices ranges to 7+ years in contrast to the 15-18 months life for smartphones and to 4-6 years life for laptops. Due to this limited sales volume and long product life, custom or chip-based development of embedded devices adds significant overheads in terms of supply chain inefficiencies, platform obsolescence, non-optimal cost structure, and barriers to adopt latest technologies.

 
Embedded vs. application software development
 

Embedded software development

Application software development

Embedded software is physically part of a device, loaded by the manufacturer, and cannot be changed or removed by the user.

Application software is an optional program that the user chooses, installs and can remove.

It’s important to consider not only algorithm performance, but also the overall system robustness, reliability, and cost in the architecture and design. It’s closely associated with hardware manufacturing. You can’t write embedded software in your bedroom and unleash it on the world. Either you make a device yourself, or you work for someone who does.

Application software is similar and different. You can do it for yourself or for The Man, with the difference that no manufacturing is involved so there is much less capital outlay.

Embedded software however is often less visible, but no less complicated. Unlike application software, embedded software has fixed hardware requirements and capabilities, addition of third-party hardware or software is strictly controlled. To manage quality risk, as well as to meet tighter standards for software certification, embedded software engineers need to leverage software simulation tools and certified code generators.

Application software is usually less complex than embedded devices. It has more flexible requirements and solutions.

Embedded systems often reside in machines that are expected to run continuously for years without errors and in some cases recover by themselves if an error occurs. Unreliable mechanical moving parts such as disk drives, switches or buttons are avoided.

Therefore the application software for personal computers is usually developed and tested less scrupulously.

Embedded software may use no operating system, or when they do use, a wide variety of operating systems can be chosen from, typically a real-time operating system. This runs from small one-person operations consisting of a run loop and a timer, to LynxOS, VxWorks, BeRTOS, ThreadX, to Windows CE or Linux (with patched kernel).

Standard computers generally use operating systems such as OS X, Windows or GNU/Linux.

 

Hot trends for Embedded s/w development: Big Data, Internet of Things, Connected Cars and Homes

The amount of data that’s being created and stored on a global level is almost inconceivable, and it just keeps growing, yet only a small percentage of data is actually analyzed.

The importance of BD doesn’t revolve around how much data you have, but what you do with it. You can take data from any source and analyze it to find answers that enable cost and time reductions, new product development and optimized offerings, and smart decision making. When you combine big data with high-powered analytics, you can accomplish business-related tasks such as:

  • Determining root causes of failures, issues and defects in near-real time.
  • Generating coupons at the point of sale based on the customer’s buying habits.
  • Recalculating entire risk portfolios in minutes.
  • Detecting fraudulent behavior before it affects your organization.

Big data affects organizations across practically every industry, from Banking, Education and Government to Health Care and Retail industry, etc.

The Internet of Things is yet another ubiquitous word in the world of embedded technologies. The core of IoT is the availability of the application or thing and its data to be a connectable ecosystem.

– For example, the Connected Home also known as the Smart Home, uses modern automation systems to provide a practical way of controlling electronic devices in the home. Connected Homes technology can include but is not limited to the scheduling and automatic operation of heating, security systems and lighting. This advanced technology allows these vital home functions to be controlled remotely from anywhere in the world using an internet connected device.

– The race to build the fully Connected Car, and ultimately the completely Autonomous vehicle, is also under way. Drivers around the world are getting used to the increasing amount of digital technology in their cars. Many of the normal features of the car such as monitors of performance data like speed, fuel efficiency, and gas tank levels; heating and air conditioning; and the audio system — all have been digitized in hopes of providing the driver with easier operation and better information. And the car, including smartphones and other devices carried onboard by drivers and passengers now reaches out to the surrounding world for music streamed from the cloud, real-time traffic information, and personalized roadside assistance. Recent innovations allow automobiles to monitor and adjust their position on the highway, alerting drivers if they are drifting out of their lane, and slowing down if they get too close to the car in front of them.

Naturally, smart homes, smart cars, and other connected products won’t just be aimed at home and private life. They’ll also have a major impact on business.

 
Conclusion

We’re just beginning to imagine the possibilities of embedded systems. Innovations in sensors, big data, and machine learning now make it possible for engineering teams to develop smarter and more autonomous systems that have the potential to dramatically improve designs and create new categories of products and services previously unimaginable.

Embedded software engineers develop embedded hardware and software solutions, custom-made for applications in various target markets. With capabilities that span the complete system and software lifecycle, Altabel Group is placed to manage entire projects from start to finish, working closely with customers to understand their needs and deliver excellent results. For more information on our work in the industry, please click here.

Thank you! And you’re always welcome with your questions.

 

Victoria Sazonchik

Victoria Sazonchik

Business Development Manager

E-mail: victoria.sazonchik@altabel.com
Skype: victoria_sazonchik
LI Profile: Victoria Sazonchik

 

altabel

Altabel Group

Professional Software Development

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

JavaScript is the most accessible cross-platform language nowadays. It’s used both on front-end and back-end website development.

Using it Altabel developers create web-apps which includes offline mode, desktop apps, apps for smartphones and tablets, add-ins for Microsoft Office, SharePoint and Dynamics. And if you don’t get acquainted with JavaScript yet we strongly believe that you should do it immediately!

I reckon many of us know there are plenty of different languages compiled in JavaScript. It’s CoffeeScript, Dart, GorillaScript and others. To be fair some of these languages are fly-by-night creations that have never really taken off in the wild. But many of these languages are major engineering efforts with large ecosystems and large corporate backers. With so many frameworks and languages out there it can be difficult to figure out which one is the best.

In 2012 Microsoft analyzed the situation and created a new language with a possibility of dealing with problems and using existing JavaScript insights. Thus, a free open source programming language TypeScript was developed and maintained by Anders Hejlsberg (co-creator of Turbo Pascal, Delphi and C#). From the very beginning the new language started expanding rather quickly due to its flexibility and productivity. Considerable amount of projects written in JavaScript began to transfer to TypeScript. Popularity and relevancy of the new language leaded to the fact that lots of TypeScript ideas became the part of new JavaScripts standard afterwards. And moving forward the AngularJS 2.0 version (today one of the most popular web frameworks) was completely written on TypeScript with the help of Microsoft and Google.

But why TypeScript?

Let’s review main reasons of its popularity:

  • TypeScript is a typed superset of JavaScript. In other words any valid JavaScript code is also valid for TypeScript.
  • TypeScript may be used to develop JavaScript applications for client-side or server-side execution.

Microsoft’s TypeScript seems to generate the most attractive code and is considered to be one of the best JavaScript front-ends. TypeScript adds sweetness, but at a price.

  • TypeScript can also be used with existing JavaScript frameworks/libraries such as Angular, jQuery, and others and can even catch type issues and provide enhanced code help as you build your apps.
  • TypeScript can be just the right fit for projects in which developers try to remain relevant without the need to learn a whole new syntax.

The ubiquity of JavaScript as a runtime has inspired people from a variety of programming backgrounds to recreate JavaScript as they see fit. And yes, TypeScript lets you write JavaScript the way you really want to.

  • TypeScript differs from JavaScript with possibility of evident static objectives, with usage maintenance of full-blown classes (just as in traditional object-oriented languages), and also with maintenance of logging on modules. It’s aimed at development speed raising, simplifying of legibility, refactoring and reusability of your code.
  • TypeScript has many additional language features but defining types and creating classes, modules, and interfaces are some of the key features it offers.
  • In TypeScript the same types are supported as well you would expect it in JavaScript. Types enable TypeScript developers to use highly-productive development tools and practices: static checking, symbol-based navigation, statement completion and code refactoring.
  • TypeScript implements many conceptions that are appropriate to object-oriented languages such as extending, polymorphism, encapsulation, accessibility modifiers and so on.
  • Lots of TypeScript features have strict rules, so various code formatting errors are excluded. Which means that the possibility of incorrect implementation or inaccurate method invocations is eliminated.
  • TypeScript potentially allows writing large complex programs more quickly. Thereafter it’s easier to maintain, develop, adjust to scale and test them in comparison with standard JavaScript.

Drawbacks

TypeScript has a number of other positive features that are out of the scope of this article. On the other hand, there are two significant minuses exist.

  • Probably, the biggest minus is entry threshold and number of specialists on the market. Nowadays there are not so many specialists with solid experience in this language.
  • In comparison with JavaScript, it’s needed more time for the development. It stems from the fact that apart from class implementation one should describe all enabled interfaces and method signatures.

TypeScript 2.0

There are some significant changes coming in TypeScript 2.0 that continue to deliver on the promise of making JavaScript scale. This includes a whole rewrite of the way types are analysed in the flow of the code and an opt-in feature that starts to deal with logic errors around the flexibility of things being undefined or null in JavaScript. Other features planned for TypeScript 2.0 include read-only properties and async/await downlevel support.

TypeScript creator Anders Hejlsberg already has plans for TypeScript 2.1 and beyond. Features envisioned for these releases include a new JavaScript language service in Microsoft’s Visual Studio software development platform and more refactoring support.

The most recent version, TypeScript 1.8, rolled out in February, includes several more features like F-Bounded polymorphism, string literal types, etc.

Conclusion

So, if you haven’t taken a look at TypeScript, I have hopefully convinced you that it is something to at least worth a bit of your time. It has some of the best minds focused on making JavaScript scale and the team is going about it in a way that is open and transparent. By embracing the reality of JavaScript and building on top of it, in my opinion TypeScript is transforming the common language of the web, for the better.

We will be happy to hear how you use TypeScript in your current projects, if you like it, if you are planning to switch to this language, what are the pros and cons in your opinion, etc. Feel free to share with your thoughts in comments below!

 

Victoria Sazonchik

Victoria Sazonchik

Business Development Manager

E-mail: victoria.sazonchik@altabel.com
Skype: victoria_sazonchik
LI Profile: Victoria Sazonchik

 

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

When planning the application you have to choose the right programming language to make your application work appropriate. The choice depends on many factors you need to consider. Such as but not limited: you need to think over on what platform the application will run, how easily new features would be added to the existing platform, the code size, performance, support and community etc.

There are various web programming languages and selecting the right one makes a website function properly. In my article I would like to focus on three of them, so called three “P”: PHP, Perl and Python to answer which of these languages is the best one.

Let’s have a look at them and try to make a comparison analysis

PHP – is free of charge open source scripting language and widely used in web environment. The best advantage of PHP is that it is easy to learn and easy to use. It is flexible and used for developing from small websites to giant business and organizational websites. Most common are informative forums, chatting platforms, CRM solutions, e-commerce shopping carts, community websites, e-business, shopping carts.

In terms of efficiency it is executed by the server and server parses the code at its source, executes and send properly formatted html to the client computer. Therefore it increases the speed of PHP applications.
What concerns the advantage of running, PHP is multiplatform language and compatible with all operating systems and platforms.

Being open source language, a large group of PHP developers help in creating a support community, so it’s maintained and when bugs are found, it can be quickly fixed.
A lot of websites including such giants as Wikipedia, Yahoo!, Facebiook, Digg, WordPress and Youtube are written in PHP. The popularity of PHP is based on its simplicity and coding style that is quiet easy to understand.

Nevertheless, the simplicity in developing, precisely principle so called «structure is not important» in PHP has its reverse side, precisely it’s hard to maintain for large applications since it is not very modular.

Also it’s weak in terms of security since its open source, all people can see the source code, and if there are any bugs it could be used to explore the weakness. About 30% of all vulnerabilities listed on the National Vulnerability Database are linked to PHP. The last summary on vulnerabilities you may find following the link: http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2013-0427

Perl –refer to all purpose languages. Perl was developed as a text editor for converting or processing large amounts of data for tasks such as creating reports. Nowadays it intended improvements and suited for web development, game programming, GUI development, popular among system administrators etc.
The Perl reusable code structure provides flexibility in apps development and at the same time creates the problem of code reading after. As there are so many ways to do, there are a lot more ways to mess up in what you’ve done. If the code was written without proper care, the reading could even take 6 months.

So from one hand Perl is a good language for small programs because of its messy syntax structure it’s hard to write and maintain large programs. On the other hand if you’re planning to develop big web application you need to consider good coordination between developers work on discussing the code stile, mentoring and managing work in the team.

In terms of portability Perl code doesn’t use system specific features, so can be run on any platform.
Among popular websites created on Perl could be named bbc.co.uk, Amazon.com, LiveJournal.

In respect of vulnerability Perl takes the second place – 9.4%. I assume that it’s not bad taking into consideration its complexity and its long history.

It has fallen out of popularity lately a bit because of the slow development of Perl 6. Most people still use Perl 5.

Python – is considered to be very elegant programming language. It’s general purpose, high level programming language. On the one hand Python’s syntax and semantics are minimal; on the other it has complex standard libraries.

Python supports multiple paradigms: object-oriented, imperative and functional programming styles and has features including fully dynamic type system and automatic memory management.

In comparison with Perl Python is easy to read language. And its key idea is vice versa “there should be one—and preferably only one—obvious way to do it”. It means that the code written by one developer could be easily developed and supported by the others. Besides to delimit blocks Python uses whitespace indentation, rather than curly braces (C, C++, ….) or keywords (Delphi).

Python is often used as a scripting language, but is also used in 3D animation (Maya, Softimage XSI, Blender) and image editors (GIMP, Inkscape, Scribus, Paint Shop Pro). It was also used for writing several video games.

Python is actively used by Google, Yahoo!, CERN and NASA. But it has problems with popularity, precisely with spreading. The reason is that it’s less simple than PHP. Working with Python you need to learn numerical libraries. So that’s why some people prefer choosing PHP instead of Python. But only the betrayed ones could explain why they choose Python, the answer is easy the development on Python is faster on 30% and his vulnerability consists only 0.67% against 36% of PHP.

Conclusion

PHP at first sight seems to be a leader in this so called comparison race. It’s simple, easy to learn and efficient for building small and middle size websites. Going further with analysis in terms of scalable large system it turns out that here Python will perform better than PHP. The reason is in readability that makes Python easier to maintain and extend. Besides, Python is object-oriented. PHP is not. Moreover, Google supports Python with its Google App Engine where web sites can be hosted on Google’s server for free. What concerns Perl, analysis showed that it’s simple programming language with cross platform running and open source modular architecture that provides to develop interesting things. If the task is to perform administration scripts Perl is much better to use here than PHP.

After the analysis it follows that the choice any of three P is a good choice. Also it means that for a certain purpose there is a right tool to choose. Besides the analysis showed that all three “P” have in common the following:

• are cross platform;
• have open source code;
• have well written documentation;
• have large user communities;
• extend libraries and big amount of code written;
• have high-level frameworks (PHP – Symfony, php.MVC; Python-Django, CherryPy, Pylons; Perl -Catalyst, CGI::Application, Gantry);

So I hope that summary based on technical analysis we made could help to make a right decision in future web projects you might have.

Thank you for your attention and if you have anything to add, please feel free to leave a comment.

 

Katerina Bulavskaya

Business Development Manager

 

altabel

Altabel Group

Professional Software Development

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


%d bloggers like this: