New Apps

Articles

Tips

Events

Improve Soft Skills

Featured




The Evolution of the C# Language

An interesting part of our conversation revolved around the concept that developers are often divided into two different camps when it comes to the evolution of programming languages. In one camp, you've got those who believe that the evolution of software languages will provide improvements that ultimately make software better. In the other camp, you've got others who believe that these programming languages should stay the way they are because they're too complex as is. Furthermore, this second camp also believes that the lack of new functionalities lets developers concentrate on learning and understanding the intricacies of the language.
When Anders Hejlsberg led the initiative to develop the C# language nearly 12 years ago, the language was developed with the intention to be a simple object-orientated language that would be familiar to C, C++, and Java users. There's been a lot of innovation that's transpired over the past 12 years, such as adding a general type system, query comprehension, interoperability with dynamic languages, and a myriad of features that have been added to the language over time.
With that said, the evolution of C# has brought new complexities to the table.
"Simple is no longer accurate. It's now a very complicated language," Lippert said.
Lippert went on to describe a tension that exists for most developers.
"Sometimes it's not even two camps, per se. I often get this from the same person in a conversation, where they say, 'I really want this new feature, and I would make really good use of that feature, but I worry I will have to train my coworkers on how to use it correctly,'" Lippert said.
This train of thought is something that's on the minds of many C# developers. Lippert elaborated by saying that future developments made to the language really need to balance how new and useful features can be included in the language without being overly complex.
Lippert also outlined several questions that should be asked when considering to implement new features into a language:
Is this new feature easy to use?
Does this new feature add enough benefit to include in the language?
Does this new feature do a good job of not introducing strange interactions with existing features?
Does this new feature make it susceptible for developers to introduce errors into their code?


Writing Quality Code with C#: Common Gotchas

Related: "Future of C# Apps"
"One of the architects on the .NET Framework, Rico Mariani, used to say that he wanted C# to be a pit of quality language. You throw users into the pit of quality, and everything they do is quality," Lippert said. In contrast, a pit of failure is where users have to climb their way out of the pit to write quality software.
Lippert reiterated that C# was designed to easily write quality software.
"C# was designed so that the obvious things to do and the right thing to do are the same thing. For the most part, that's true. But, no design is perfect," Lippert explained.
I asked Lippert if he could help describe common pain points that developers experience with the language.
One common problem focuses C#'s automatic memory management.
"If you allocate a bunch of memory, then the runtime automatically figures out when you're done using it and returns it back to the system. That's great. But it does not have automatic management of non-memory resources, so things like you open a file, or a database connections or any other scarce resource like that, the runtime doesn't know about them," Lippert said.
Eventually the runtime will clean up those non-memory resources, but it does it on its own schedule. Although it does provide some level of automatic management, you're at the mercy of your garbage collection to free up those resources.
"Just for politeness, programs should be aggressively cleaning up non-memory resources in C#, and that's a very common mistake to not do so," Lippert explained.
Another common problem is value equality and representation in C#. In other words, are these two things equal in C#?
Lippert explained that there's several different to check for equality in C#, and many of those methods are inconsistent with each other.
He illustrated the example, further: Imagine writing the number two on two different pages of paper. Are those two objects equal? Well, the values are equal, but those are two different pieces of paper.
"So there are often situations in C# where you think you're doing comparisons and values, but you're actually comparing references or vice versa," Lippert said.
Although you can painstakingly debug your code for these common C# programming problems, Coverity's development testing platform helps eliminate these hassles in a cinch.

The Future of C#

Today, we're up to C# 5.0, and C# 6.0 is on the horizon. Although C# 6.0 has been announced, there's no schedule that tells us when the new version will be released. And most interesting is Microsoft's work with its Roslyn Project, which aims to break down the traditional model of blackbox compilers by providing developers with a documented and publicly available interface. Currently, the project is in a Community Technology Preview (CTP) state.
"The point of the Roslyn API isn't just to improve the quality of the compiler itself and make it easier for the compiler team to add new features in the future, but also it's to make it easier for companies like Coverity to work on static analysis of those programming languages," Lippert said.
Once the Roslyn library is available for public use, then companies will be able to provide accurate analyzes because their products will be able to run on the same library of underlying tools as the Microsoft compiler.
Talking about the Microsoft development system, Lippert emphasized that the company is very much in the business of investing time and research into producing quality languages, such as the up and coming TypeScript JavaScript-variant language.

References :








A question that’s often asked is how many programming languages should I learn to have a successful career as a programmer?
Take it from an IBM executive, who recently said:
If you’re going to be an engineer in the future, you have to learn multiple languages.
This has never been more true than it is in today! The top programmers, who will get the best jobs and will have the best career prospects, are the ones who are adaptable, and well-versed in a number of programming languages.
New coding languages emerge every year to address new problems that need to be solved. Just as there are hammers, screwdrivers, sanders, and an array of other tools for different tasks, there are different programming languages to get the job done.
For example, C++ is the best language for making video games and gives you a great deal of granular control, while Python is ideal for compiling and computing large amounts of data and analytics and works superbly for building servers.
When you know more than one coding language, you will be able to easily take care of any coding job that is offered to you (if you are a freelancer) or that your employer wants you to do (if you are employed by a coding company). Your career prospects are also much stronger, brighter, and secure if you are an expert at more than one coding language.

The Coding Environment Has Changed

In the early days of computing, areas of specialization in the digital world were very clear, and you could make a very nice career for yourself using one coding language to do all of your company’s projects. There were only a few coding languages just a few decades ago, so specialization was compatible with a thriving career.
The computer world is changing at a rapid pace, so one language won’t do the job, even at the same company. For instance, Facebook.com’s front-end uses JavaScript, the back-end uses Hack, PHP, C++, Java, Python, Erlang, D, Xhp, and the database is built using MySQL and HBase.
New languages are even being created all the time, as new needs are developed in the computer industry. When a company wants to do something that has never been done before, which is something that happens pretty often these days, the development of a new coding language to perform the task is required. Expert coders know not only how to read and program in more than one language, they also know how to create them for new and unique projects as needed.
If you have the proper education, you will be able to do these things and your career prospects are even stronger and more powerful than ever.

The Importance of Learning New Coding Languages

A good rule of thumb for most programmers is to learn as many coding languages as you can during your initial education, then learn one new one a year thereafter.
With new coding languages being invented all the time, you should always have something to learn, and your skill base and employability will increase. You will basically have a bigger toolbox to offer potential employers (or clients, if you work as a freelancer). You will always have the right tool to perform the right task, without needing someone to walk you through it or get additional training, which can put a project behind schedule, or cause an employer to have to hire a new person for the project (which can be a burden on the budget).

You Should Be Learning Old Coding Languages, Too

It’s wise to learn old programming languages as well as the new and developing ones.
For example, Cobol is one of the oldest coding languages around. It was invented in 1969, long before the Internet, or even personal computers. Believe it or not, it is still used in a lot of things, such as programming traffic lights and the electronics at airports. Anyone who knows Cobol is a desirable employee for a municipal government.
Yet, many modern programmers opt out of learning Cobol because they think it’s outdated and not used very often. They could not be more wrong. Because so many modern programmers choose to forego learning Cobol, that makes anyone who knows it very desirable in a lot of different jobs where it is still used, and may even be the main coding language used.
So, by learning older coding languages like this, you are opening yourself up to a wide variety of career opportunities, even more than more experienced coders, because you know a language they don’t, and many employers still use this language.

Enhance Your Career With Each Coding Language You Learn

The bottom line is that if you are going to be a programmer, you need to know how to work with as many programming languages as possible.
Each language you learn makes you more desirable of an employee or freelancer. Become fluent in these languages, and the more you learn, the more career doors will open to you. Soon, you will know enough languages to discover the whole coding industry is your oyster and you can pick and choose the best paying jobs with the most popular employers. 
You can basically write your own ticket to career success when you know a large number of both old and new programming languages!
When you learn a new coding language, you see what problems it is solving and how it is solving them. This makes it easier for you to develop new coding languages as they become necessary for new and innovative projects. Make yourself a star in the coding industry and have the best employers coming to you. Get an excellent coding education by learning as many coding languages as you can, and then keep learning new ones on your own

If you’ve worked in the world of the internet at any point in the past few years, there is a good chance you’ve heard of the hot new technology that is HTML5, and there is a similarly good chance that what you’ve heard is largely hype and buzzwords. While HTML5 does offer a great deal of flashy new technologies to the web toolbelt, there are subtle and more significant aspects which often go unnoticed. Before we get into that, though, let’s brush up on some HTML history.

Up until the early 1990s, the web was largely text based. There was little text formatting, no images, and no structure beyond what you could achieve in a plain text document. Then in the ’90s, HTML was adopted as a way to visually format and structure text within the web browser, which lead us into the era of table-based layouts.

For those of you who never had the fortune of building websites in the ’90s, table-based layouts were the equivalent of creating an entire website using an Excel spreadsheet. Tables were never meant for anything beyond displaying tabular data, but at the time they were the only HTML element that allowed us to create horizontal layouts. For example, sidebars and multi-column layouts were made possible thanks to HTML tables. It wasn’t until the early 2000s, when CSS was adopted, that we were able to move away from hacky, table-based layouts, and take on a more semantic approach to development.

The idea behind CSS (cascading style sheets) is that the structure of a web page and its design should be kept separate. This allows us to reuse more code, making our websites faster, and also swap out styles and designs quickly and efficiently. CSS also offered us more control over visual layout and formatting. Thanks to CSS we could create the multi-column layouts (and much, much more) we are used to today, and do it in a semantic way, meaning every HTML element had a role and it should only be used for that role (i.e. tables should be used for tabular data).

This shift to semantic web development allowed us to start defining what our webpages mean through proper use of HTML, which in turn allowed computers to make more sense of our content. This was only the beginning, however, and leads us directly to HTML5.

What is HTML5 ?


I get asked this question a lot, and it’s a hard question to answer. Technically HTML5 is a new language specification for HTML, but many other new technologies have been thrown under the HTML5 umbrella, which has turned HTML5 into a nebulous collection of technologies rather than any one thing in particular. For those of you who remember the Web 2.0 craze, HTML5 could be considered Web 3.0.

Some of the flashier technologies included under the HTML5 umbrella allow us to do things like manipulate the user’s webcam, render creepy 3D eyeballs, and create dynamic, 3D user interfaces. While these are all amazing and groundbreaking for the web, none of them are purely “HTML5”. They are HTML5 used in conjunction with other new technologies.


So what is HTML5 then ? 


The major contribution of HTML5, on its own, is that it allows us to further define the meaning of our content. In fact, HTML5 goes beyond meaning and allows us to define the intent of our content. Let me repeat that again, because this is the true importance of HTML5.


HTML5 allows us to define the INTENT of our content.


Not only can we define what an element on a page means (ie. this piece of content is a paragraph, or a heading, or a link to an external resource), but it allows us to define the purpose of our content. Computers don’t inherently know the difference between an “About Us” page and a blog post, or a blog post and a list of content related to said blog post. But, with HTML5, we can give computers hints.

For example:

1. The <article> element is used to specify content that is independent of the content around it, and is meant to be distributed by itself (think article or blog post).

2. The <aside> element is used to specify content that is tangentially related to the main content (think recent or related blog posts).

3. The <nav> element is used to specify a group of links that are used to navigate a site, as opposed to linking to resources that support the content.

If you’re still not convinced of HTML5’s importance, think of it this way: by defining what our content is, and what purpose it has, we allow search engines and possibly other, future technologies to make more sense of our content, which in turn improves content sharing, curation, and discovery in a huge, yet to be defined way. When combined with its umbrella technologies, HTML5 is the next leap in the evolution of the web and will fundamentally change how we communicate and interact with each other and our content.

Conclusion


So what’s the takeaway from all of this? The technologies associated with HTML5 are making the our content more dynamic and interactive, and are essentially improving the user experience of the web. The new HTML specification, on the other hand, is the scaffold. It provides more robust structure and organization. It is the means by which we classify the flora and the fauna of the web. New HTML elements may seem trivial, but the ability to better define our thoughts, content, and architecture improves our ability to connect and share content.


References :



Pointers in C are easy and fun to learn. Some C programming tasks are performed more easily with pointers, and other tasks, such as dynamic memory allocation, cannot be performed without using pointers. So it becomes necessary to learn pointers to become a perfect C programmer. Let's start learning them in simple and easy steps.

As you know, every variable is a memory location and every memory location has its address defined which can be accessed using ampersand (&) operator, which denotes an address in memory.

Consider the following example, which prints the address of the variables defined −

#include <stdio.h>

int main () {

   int  var1;
   char var2[10];

   printf("Address of var1 variable: %x\n", &var1  );
   printf("Address of var2 variable: %x\n", &var2  );

   return 0;
}

When the above code is compiled and executed, it produces the following result −

Address of var1 variable: bff5a400
Address of var2 variable: bff5a3f6

What are Pointers?

A pointer is a variable whose value is the address of another variable, i.e., direct address of the memory location. Like any variable or constant, you must declare a pointer before using it to store any variable address. The general form of a pointer variable declaration is −

type *var-name;

Here, type is the pointer's base type; it must be a valid C data type and var-name is the name of the pointer variable. The asterisk * used to declare a pointer is the same asterisk used for multiplication. However, in this statement the asterisk is being used to designate a variable as a pointer.

Take a look at some of the valid pointer declarations −

int    *ip;    /* pointer to an integer */
double *dp;    /* pointer to a double */
float  *fp;    /* pointer to a float */
char   *ch     /* pointer to a character */


The actual data type of the value of all pointers, whether integer, float, character, or otherwise, is the same, a long hexadecimal number that represents a memory address. The only difference between pointers of different data types is the data type of the variable or constant that the pointer points to.


How to Use Pointers?

There are a few important operations, which we will do with the help of pointers very frequently. (a) We define a pointer variable, (b) assign the address of a variable to a pointer and (c) finally access the value at the address available in the pointer variable. This is done by using unary operator * that returns the value of the variable located at the address specified by its operand. The following example makes use of these operations −

#include <stdio.h>

int main () {

   int  var = 20;   /* actual variable declaration */
   int  *ip;        /* pointer variable declaration */

   ip = &var;  /* store address of var in pointer variable*/

   printf("Address of var variable: %x\n", &var  );

   /* address stored in pointer variable */
   printf("Address stored in ip variable: %x\n", ip );

   /* access the value using the pointer */
   printf("Value of *ip variable: %d\n", *ip );

   return 0;
}


When the above code is compiled and executed, it produces the following result −

Address of var variable: bffd8b3c
Address stored in ip variable: bffd8b3c
Value of *ip variable: 20


NULL Pointers


It is always a good practice to assign a NULL value to a pointer variable in case you do not have an exact address to be assigned. This is done at the time of variable declaration. A pointer that is assigned NULL is called a null pointer.

The NULL pointer is a constant with a value of zero defined in several standard libraries. Consider the following program −

#include <stdio.h>

int main () {

   int  *ptr = NULL;

   printf("The value of ptr is : %x\n", ptr  );

   return 0;
}

When the above code is compiled and executed, it produces the following result −

The value of ptr is 0

In most of the operating systems, programs are not permitted to access memory at address 0 because that memory is reserved by the operating system. However, the memory address 0 has special significance; it signals that the pointer is not intended to point to an accessible memory location. But by convention, if a pointer contains the null (zero) value, it is assumed to point to nothing.

To check for a null pointer, you can use an 'if' statement as follows −

if(ptr)     /* succeeds if p is not null */
if(!ptr)    /* succeeds if p is null */


References :



Programming is one of the most valuable skills you can pick up in these modern times, whether for career prospects or to stretch your brain and create something awesome. If you're just getting started on your coding journey, here are ten tips and resources to set you off on the right foot.

10. Figure Out Why You Want to Learn to Code

The direction you go in will depend in large part on why you want to learn to code in the first place and how much time you have to devote to learning. If you want to be a professional programmer, signing up college courses might be your best bet. (Google has a list of suggested skills and courses for would-be software engineers.) If you want to build websites or games for fun (and possibly profit) in your spare time, interactive tutorials might be better. PAL App has a career buddy feature which will better answer your question about which course to go while keeping in mind the time and duration.

9. Choose the Right Language

There's no one "best" programming language, and once you've learned one, it's fairly easy to pick up another, so don't get hung too up on choosing your first language. That said, some languages are more beginner-friendly than others. The language you choose to start with might depend, again, on your purpose. (For example, if you want to write an iOS app, you'll need to learn Swift.) There's a case for starting with C if you're serious about programming, although higher-level languages, like Python, are easier to jump into right away.

8. Start Small (and Be Patient)

No matter which language or learning method you choose, you should start at the very beginning (a very good place to start). When David Sinsky taught himself to code in eight weeks, for example, he spent one weekend getting an introductory grasp of Python and one weekend getting an introductory understanding of Django—going through the tutorial, deleting all of the tutorial code, and working through the tutorial again from scratch. Start with the basics and be patient with yourself as you progress. To take your first coding project from start to finish, break down the project into simple steps. And if one method of learning isn't working for you (e.g., books), try another method before giving up.

7. Try a Kids App

Even toddlers are learning to code these days. That's actually a great thing for all of us. Although many of the programs designed to teach kids to code are very simplistic, many of them, like Scratch, are suitable for all ages. It doesn't matter how old you are; even kids' animation apps can get you started with the basics of programming (Try Phoenix - PAL APPS which offers video tutorials and basic training on different programming languages).

6. Use Free Online Training Sites

Free online training sites like Codecademy and other Hour of Code participants can help you write your first computer program. Tutorials from PAL Apps, Code.org, and many other organizations will introduce you to the basics of programming—all while creating a new game, site, or other project. Find the resources you need according to the language you're learning with PAL. These are good starting points, but you'll need to take the initiative to further or continue your learning after these introductions.

5. Take a Coding Course

Online computer science courses offer a bit more of rounded educational experience compared to online training sites focusing on one language. These courses are designed to teach you fundamental skills over several months in college-level classes.

4. Grab Some Free Programming Books

When you get stuck on a problem or just need to look something up, reference books come in very handy. There's a huge collection of over 500 free programming books posted on GitHub.

3. Play Coding Games

Often the best way to learn is through games. While plenty of coding tutorials have you building simple or complex games yourself, a couple of teaching apps are literally games: PAL Learn Python or any series of PAL Apps are full of online challenge and game that will help you learn programming while playing.

2. Get a Mentor (or Teach Someone Else)

The programming community is full of people who are willing to help the next generation of programmers. Hack.pledge() is one site that will connect you to a mentor, or you can sign up to mentor someone else. Even just planning to teach what you've learned can help you retain the information better.

1. Hack Someone Else's Code

When you reverse engineer someone else's code, testing each line to see how it works, you get a better understanding of the big picture. Thanks to tons of open source code, you can learn just about anything—and keep learning through the incremental-hacking cycle. Just remember to share your code back with the community if you improve on a program.
Showing posts with label Featured. Show all posts
Showing posts with label Featured. Show all posts

Thursday, September 8, 2016

The Past, Present, and Future of C#




The Evolution of the C# Language

An interesting part of our conversation revolved around the concept that developers are often divided into two different camps when it comes to the evolution of programming languages. In one camp, you've got those who believe that the evolution of software languages will provide improvements that ultimately make software better. In the other camp, you've got others who believe that these programming languages should stay the way they are because they're too complex as is. Furthermore, this second camp also believes that the lack of new functionalities lets developers concentrate on learning and understanding the intricacies of the language.
When Anders Hejlsberg led the initiative to develop the C# language nearly 12 years ago, the language was developed with the intention to be a simple object-orientated language that would be familiar to C, C++, and Java users. There's been a lot of innovation that's transpired over the past 12 years, such as adding a general type system, query comprehension, interoperability with dynamic languages, and a myriad of features that have been added to the language over time.
With that said, the evolution of C# has brought new complexities to the table.
"Simple is no longer accurate. It's now a very complicated language," Lippert said.
Lippert went on to describe a tension that exists for most developers.
"Sometimes it's not even two camps, per se. I often get this from the same person in a conversation, where they say, 'I really want this new feature, and I would make really good use of that feature, but I worry I will have to train my coworkers on how to use it correctly,'" Lippert said.
This train of thought is something that's on the minds of many C# developers. Lippert elaborated by saying that future developments made to the language really need to balance how new and useful features can be included in the language without being overly complex.
Lippert also outlined several questions that should be asked when considering to implement new features into a language:
Is this new feature easy to use?
Does this new feature add enough benefit to include in the language?
Does this new feature do a good job of not introducing strange interactions with existing features?
Does this new feature make it susceptible for developers to introduce errors into their code?


Writing Quality Code with C#: Common Gotchas

Related: "Future of C# Apps"
"One of the architects on the .NET Framework, Rico Mariani, used to say that he wanted C# to be a pit of quality language. You throw users into the pit of quality, and everything they do is quality," Lippert said. In contrast, a pit of failure is where users have to climb their way out of the pit to write quality software.
Lippert reiterated that C# was designed to easily write quality software.
"C# was designed so that the obvious things to do and the right thing to do are the same thing. For the most part, that's true. But, no design is perfect," Lippert explained.
I asked Lippert if he could help describe common pain points that developers experience with the language.
One common problem focuses C#'s automatic memory management.
"If you allocate a bunch of memory, then the runtime automatically figures out when you're done using it and returns it back to the system. That's great. But it does not have automatic management of non-memory resources, so things like you open a file, or a database connections or any other scarce resource like that, the runtime doesn't know about them," Lippert said.
Eventually the runtime will clean up those non-memory resources, but it does it on its own schedule. Although it does provide some level of automatic management, you're at the mercy of your garbage collection to free up those resources.
"Just for politeness, programs should be aggressively cleaning up non-memory resources in C#, and that's a very common mistake to not do so," Lippert explained.
Another common problem is value equality and representation in C#. In other words, are these two things equal in C#?
Lippert explained that there's several different to check for equality in C#, and many of those methods are inconsistent with each other.
He illustrated the example, further: Imagine writing the number two on two different pages of paper. Are those two objects equal? Well, the values are equal, but those are two different pieces of paper.
"So there are often situations in C# where you think you're doing comparisons and values, but you're actually comparing references or vice versa," Lippert said.
Although you can painstakingly debug your code for these common C# programming problems, Coverity's development testing platform helps eliminate these hassles in a cinch.

The Future of C#

Today, we're up to C# 5.0, and C# 6.0 is on the horizon. Although C# 6.0 has been announced, there's no schedule that tells us when the new version will be released. And most interesting is Microsoft's work with its Roslyn Project, which aims to break down the traditional model of blackbox compilers by providing developers with a documented and publicly available interface. Currently, the project is in a Community Technology Preview (CTP) state.
"The point of the Roslyn API isn't just to improve the quality of the compiler itself and make it easier for the compiler team to add new features in the future, but also it's to make it easier for companies like Coverity to work on static analysis of those programming languages," Lippert said.
Once the Roslyn library is available for public use, then companies will be able to provide accurate analyzes because their products will be able to run on the same library of underlying tools as the Microsoft compiler.
Talking about the Microsoft development system, Lippert emphasized that the company is very much in the business of investing time and research into producing quality languages, such as the up and coming TypeScript JavaScript-variant language.

References :

Saturday, April 23, 2016

What is the Best Programming Language ? How Many Should I Learn ?








A question that’s often asked is how many programming languages should I learn to have a successful career as a programmer?
Take it from an IBM executive, who recently said:
If you’re going to be an engineer in the future, you have to learn multiple languages.
This has never been more true than it is in today! The top programmers, who will get the best jobs and will have the best career prospects, are the ones who are adaptable, and well-versed in a number of programming languages.
New coding languages emerge every year to address new problems that need to be solved. Just as there are hammers, screwdrivers, sanders, and an array of other tools for different tasks, there are different programming languages to get the job done.
For example, C++ is the best language for making video games and gives you a great deal of granular control, while Python is ideal for compiling and computing large amounts of data and analytics and works superbly for building servers.
When you know more than one coding language, you will be able to easily take care of any coding job that is offered to you (if you are a freelancer) or that your employer wants you to do (if you are employed by a coding company). Your career prospects are also much stronger, brighter, and secure if you are an expert at more than one coding language.

The Coding Environment Has Changed

In the early days of computing, areas of specialization in the digital world were very clear, and you could make a very nice career for yourself using one coding language to do all of your company’s projects. There were only a few coding languages just a few decades ago, so specialization was compatible with a thriving career.
The computer world is changing at a rapid pace, so one language won’t do the job, even at the same company. For instance, Facebook.com’s front-end uses JavaScript, the back-end uses Hack, PHP, C++, Java, Python, Erlang, D, Xhp, and the database is built using MySQL and HBase.
New languages are even being created all the time, as new needs are developed in the computer industry. When a company wants to do something that has never been done before, which is something that happens pretty often these days, the development of a new coding language to perform the task is required. Expert coders know not only how to read and program in more than one language, they also know how to create them for new and unique projects as needed.
If you have the proper education, you will be able to do these things and your career prospects are even stronger and more powerful than ever.

The Importance of Learning New Coding Languages

A good rule of thumb for most programmers is to learn as many coding languages as you can during your initial education, then learn one new one a year thereafter.
With new coding languages being invented all the time, you should always have something to learn, and your skill base and employability will increase. You will basically have a bigger toolbox to offer potential employers (or clients, if you work as a freelancer). You will always have the right tool to perform the right task, without needing someone to walk you through it or get additional training, which can put a project behind schedule, or cause an employer to have to hire a new person for the project (which can be a burden on the budget).

You Should Be Learning Old Coding Languages, Too

It’s wise to learn old programming languages as well as the new and developing ones.
For example, Cobol is one of the oldest coding languages around. It was invented in 1969, long before the Internet, or even personal computers. Believe it or not, it is still used in a lot of things, such as programming traffic lights and the electronics at airports. Anyone who knows Cobol is a desirable employee for a municipal government.
Yet, many modern programmers opt out of learning Cobol because they think it’s outdated and not used very often. They could not be more wrong. Because so many modern programmers choose to forego learning Cobol, that makes anyone who knows it very desirable in a lot of different jobs where it is still used, and may even be the main coding language used.
So, by learning older coding languages like this, you are opening yourself up to a wide variety of career opportunities, even more than more experienced coders, because you know a language they don’t, and many employers still use this language.

Enhance Your Career With Each Coding Language You Learn

The bottom line is that if you are going to be a programmer, you need to know how to work with as many programming languages as possible.
Each language you learn makes you more desirable of an employee or freelancer. Become fluent in these languages, and the more you learn, the more career doors will open to you. Soon, you will know enough languages to discover the whole coding industry is your oyster and you can pick and choose the best paying jobs with the most popular employers. 
You can basically write your own ticket to career success when you know a large number of both old and new programming languages!
When you learn a new coding language, you see what problems it is solving and how it is solving them. This makes it easier for you to develop new coding languages as they become necessary for new and innovative projects. Make yourself a star in the coding industry and have the best employers coming to you. Get an excellent coding education by learning as many coding languages as you can, and then keep learning new ones on your own

Friday, April 22, 2016

Why HTML5 is really important ?


If you’ve worked in the world of the internet at any point in the past few years, there is a good chance you’ve heard of the hot new technology that is HTML5, and there is a similarly good chance that what you’ve heard is largely hype and buzzwords. While HTML5 does offer a great deal of flashy new technologies to the web toolbelt, there are subtle and more significant aspects which often go unnoticed. Before we get into that, though, let’s brush up on some HTML history.

Up until the early 1990s, the web was largely text based. There was little text formatting, no images, and no structure beyond what you could achieve in a plain text document. Then in the ’90s, HTML was adopted as a way to visually format and structure text within the web browser, which lead us into the era of table-based layouts.

For those of you who never had the fortune of building websites in the ’90s, table-based layouts were the equivalent of creating an entire website using an Excel spreadsheet. Tables were never meant for anything beyond displaying tabular data, but at the time they were the only HTML element that allowed us to create horizontal layouts. For example, sidebars and multi-column layouts were made possible thanks to HTML tables. It wasn’t until the early 2000s, when CSS was adopted, that we were able to move away from hacky, table-based layouts, and take on a more semantic approach to development.

The idea behind CSS (cascading style sheets) is that the structure of a web page and its design should be kept separate. This allows us to reuse more code, making our websites faster, and also swap out styles and designs quickly and efficiently. CSS also offered us more control over visual layout and formatting. Thanks to CSS we could create the multi-column layouts (and much, much more) we are used to today, and do it in a semantic way, meaning every HTML element had a role and it should only be used for that role (i.e. tables should be used for tabular data).

This shift to semantic web development allowed us to start defining what our webpages mean through proper use of HTML, which in turn allowed computers to make more sense of our content. This was only the beginning, however, and leads us directly to HTML5.

What is HTML5 ?


I get asked this question a lot, and it’s a hard question to answer. Technically HTML5 is a new language specification for HTML, but many other new technologies have been thrown under the HTML5 umbrella, which has turned HTML5 into a nebulous collection of technologies rather than any one thing in particular. For those of you who remember the Web 2.0 craze, HTML5 could be considered Web 3.0.

Some of the flashier technologies included under the HTML5 umbrella allow us to do things like manipulate the user’s webcam, render creepy 3D eyeballs, and create dynamic, 3D user interfaces. While these are all amazing and groundbreaking for the web, none of them are purely “HTML5”. They are HTML5 used in conjunction with other new technologies.


So what is HTML5 then ? 


The major contribution of HTML5, on its own, is that it allows us to further define the meaning of our content. In fact, HTML5 goes beyond meaning and allows us to define the intent of our content. Let me repeat that again, because this is the true importance of HTML5.


HTML5 allows us to define the INTENT of our content.


Not only can we define what an element on a page means (ie. this piece of content is a paragraph, or a heading, or a link to an external resource), but it allows us to define the purpose of our content. Computers don’t inherently know the difference between an “About Us” page and a blog post, or a blog post and a list of content related to said blog post. But, with HTML5, we can give computers hints.

For example:

1. The <article> element is used to specify content that is independent of the content around it, and is meant to be distributed by itself (think article or blog post).

2. The <aside> element is used to specify content that is tangentially related to the main content (think recent or related blog posts).

3. The <nav> element is used to specify a group of links that are used to navigate a site, as opposed to linking to resources that support the content.

If you’re still not convinced of HTML5’s importance, think of it this way: by defining what our content is, and what purpose it has, we allow search engines and possibly other, future technologies to make more sense of our content, which in turn improves content sharing, curation, and discovery in a huge, yet to be defined way. When combined with its umbrella technologies, HTML5 is the next leap in the evolution of the web and will fundamentally change how we communicate and interact with each other and our content.

Conclusion


So what’s the takeaway from all of this? The technologies associated with HTML5 are making the our content more dynamic and interactive, and are essentially improving the user experience of the web. The new HTML specification, on the other hand, is the scaffold. It provides more robust structure and organization. It is the means by which we classify the flora and the fauna of the web. New HTML elements may seem trivial, but the ability to better define our thoughts, content, and architecture improves our ability to connect and share content.


References :

Thursday, April 21, 2016

What are the uses of C Pointers



Pointers in C are easy and fun to learn. Some C programming tasks are performed more easily with pointers, and other tasks, such as dynamic memory allocation, cannot be performed without using pointers. So it becomes necessary to learn pointers to become a perfect C programmer. Let's start learning them in simple and easy steps.

As you know, every variable is a memory location and every memory location has its address defined which can be accessed using ampersand (&) operator, which denotes an address in memory.

Consider the following example, which prints the address of the variables defined −

#include <stdio.h>

int main () {

   int  var1;
   char var2[10];

   printf("Address of var1 variable: %x\n", &var1  );
   printf("Address of var2 variable: %x\n", &var2  );

   return 0;
}

When the above code is compiled and executed, it produces the following result −

Address of var1 variable: bff5a400
Address of var2 variable: bff5a3f6

What are Pointers?

A pointer is a variable whose value is the address of another variable, i.e., direct address of the memory location. Like any variable or constant, you must declare a pointer before using it to store any variable address. The general form of a pointer variable declaration is −

type *var-name;

Here, type is the pointer's base type; it must be a valid C data type and var-name is the name of the pointer variable. The asterisk * used to declare a pointer is the same asterisk used for multiplication. However, in this statement the asterisk is being used to designate a variable as a pointer.

Take a look at some of the valid pointer declarations −

int    *ip;    /* pointer to an integer */
double *dp;    /* pointer to a double */
float  *fp;    /* pointer to a float */
char   *ch     /* pointer to a character */


The actual data type of the value of all pointers, whether integer, float, character, or otherwise, is the same, a long hexadecimal number that represents a memory address. The only difference between pointers of different data types is the data type of the variable or constant that the pointer points to.


How to Use Pointers?

There are a few important operations, which we will do with the help of pointers very frequently. (a) We define a pointer variable, (b) assign the address of a variable to a pointer and (c) finally access the value at the address available in the pointer variable. This is done by using unary operator * that returns the value of the variable located at the address specified by its operand. The following example makes use of these operations −

#include <stdio.h>

int main () {

   int  var = 20;   /* actual variable declaration */
   int  *ip;        /* pointer variable declaration */

   ip = &var;  /* store address of var in pointer variable*/

   printf("Address of var variable: %x\n", &var  );

   /* address stored in pointer variable */
   printf("Address stored in ip variable: %x\n", ip );

   /* access the value using the pointer */
   printf("Value of *ip variable: %d\n", *ip );

   return 0;
}


When the above code is compiled and executed, it produces the following result −

Address of var variable: bffd8b3c
Address stored in ip variable: bffd8b3c
Value of *ip variable: 20


NULL Pointers


It is always a good practice to assign a NULL value to a pointer variable in case you do not have an exact address to be assigned. This is done at the time of variable declaration. A pointer that is assigned NULL is called a null pointer.

The NULL pointer is a constant with a value of zero defined in several standard libraries. Consider the following program −

#include <stdio.h>

int main () {

   int  *ptr = NULL;

   printf("The value of ptr is : %x\n", ptr  );

   return 0;
}

When the above code is compiled and executed, it produces the following result −

The value of ptr is 0

In most of the operating systems, programs are not permitted to access memory at address 0 because that memory is reserved by the operating system. However, the memory address 0 has special significance; it signals that the pointer is not intended to point to an accessible memory location. But by convention, if a pointer contains the null (zero) value, it is assumed to point to nothing.

To check for a null pointer, you can use an 'if' statement as follows −

if(ptr)     /* succeeds if p is not null */
if(!ptr)    /* succeeds if p is null */


References :

Wednesday, April 20, 2016

Top 10 Ways to Teach Yourself to Code



Programming is one of the most valuable skills you can pick up in these modern times, whether for career prospects or to stretch your brain and create something awesome. If you're just getting started on your coding journey, here are ten tips and resources to set you off on the right foot.

10. Figure Out Why You Want to Learn to Code

The direction you go in will depend in large part on why you want to learn to code in the first place and how much time you have to devote to learning. If you want to be a professional programmer, signing up college courses might be your best bet. (Google has a list of suggested skills and courses for would-be software engineers.) If you want to build websites or games for fun (and possibly profit) in your spare time, interactive tutorials might be better. PAL App has a career buddy feature which will better answer your question about which course to go while keeping in mind the time and duration.

9. Choose the Right Language

There's no one "best" programming language, and once you've learned one, it's fairly easy to pick up another, so don't get hung too up on choosing your first language. That said, some languages are more beginner-friendly than others. The language you choose to start with might depend, again, on your purpose. (For example, if you want to write an iOS app, you'll need to learn Swift.) There's a case for starting with C if you're serious about programming, although higher-level languages, like Python, are easier to jump into right away.

8. Start Small (and Be Patient)

No matter which language or learning method you choose, you should start at the very beginning (a very good place to start). When David Sinsky taught himself to code in eight weeks, for example, he spent one weekend getting an introductory grasp of Python and one weekend getting an introductory understanding of Django—going through the tutorial, deleting all of the tutorial code, and working through the tutorial again from scratch. Start with the basics and be patient with yourself as you progress. To take your first coding project from start to finish, break down the project into simple steps. And if one method of learning isn't working for you (e.g., books), try another method before giving up.

7. Try a Kids App

Even toddlers are learning to code these days. That's actually a great thing for all of us. Although many of the programs designed to teach kids to code are very simplistic, many of them, like Scratch, are suitable for all ages. It doesn't matter how old you are; even kids' animation apps can get you started with the basics of programming (Try Phoenix - PAL APPS which offers video tutorials and basic training on different programming languages).

6. Use Free Online Training Sites

Free online training sites like Codecademy and other Hour of Code participants can help you write your first computer program. Tutorials from PAL Apps, Code.org, and many other organizations will introduce you to the basics of programming—all while creating a new game, site, or other project. Find the resources you need according to the language you're learning with PAL. These are good starting points, but you'll need to take the initiative to further or continue your learning after these introductions.

5. Take a Coding Course

Online computer science courses offer a bit more of rounded educational experience compared to online training sites focusing on one language. These courses are designed to teach you fundamental skills over several months in college-level classes.

4. Grab Some Free Programming Books

When you get stuck on a problem or just need to look something up, reference books come in very handy. There's a huge collection of over 500 free programming books posted on GitHub.

3. Play Coding Games

Often the best way to learn is through games. While plenty of coding tutorials have you building simple or complex games yourself, a couple of teaching apps are literally games: PAL Learn Python or any series of PAL Apps are full of online challenge and game that will help you learn programming while playing.

2. Get a Mentor (or Teach Someone Else)

The programming community is full of people who are willing to help the next generation of programmers. Hack.pledge() is one site that will connect you to a mentor, or you can sign up to mentor someone else. Even just planning to teach what you've learned can help you retain the information better.

1. Hack Someone Else's Code

When you reverse engineer someone else's code, testing each line to see how it works, you get a better understanding of the big picture. Thanks to tons of open source code, you can learn just about anything—and keep learning through the incremental-hacking cycle. Just remember to share your code back with the community if you improve on a program.

Social Impact