TIOBE Index for May 2023 – Which Programming Language is Most Popular?

Have you seen the latest TIOBE rankings report?

The TIOBE Programming Community index is an indicator of the popularity of programming languages. The index is updated once a month. The ratings are based on the number of skilled engineers world-wide, courses and third-party vendors. Popular search engines such as Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube and Baidu are used to calculate the ratings. Observe that the TIOBE index is not about the best programming language or the language in which most lines of code have been written.

It has been stated before, programming language popularity is rather stable. If we look at the first 10 programming languages in the TIOBE index, then C# is the youngest of them all. C# started in 2000. That is 23 years ago! Almost every day a new programming language is born, but hardly any of them enter the top 100. At least not in their first 10 years. The only languages younger than 10 years in the current top 100 are: Swift (#14), Rust (#17), Crystal (#48), Solidity (#59), Pony (#71), Raku (#72), Zig (#88) and Hack (#92). None of them are less than 5 years old. In other words, it is almost impossible to hit the charts as a newbie. On the contrary, we see that golden oldies revive. Take for instance Fortran, which is back in the top 20 thanks to the growing demand for numerical computational power. So, if you have just invented a brand new language, please have some patience! — Paul Jansen CEO TIOBE Software

You can read the details of how and why languages are popular at the TIOBE website. If you are a developer, you will find this information interesting.

Continue reading “TIOBE Index for May 2023 – Which Programming Language is Most Popular?”

TIOBE Index for January 2023 – Which Language is Most Popular?

Have you seen the latest TIOBE rankings report?

The TIOBE Programming Community index is an indicator of the popularity of programming languages. The index is updated once a month. The ratings are based on the number of skilled engineers world-wide, courses and third-party vendors. Popular search engines such as Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube and Baidu are used to calculate the ratings. Observe that the TIOBE index is not about the best programming language or the language in which most lines of code have been written.

Scripting language Lua is back in the top 20 of the TIOBE index. In its heyday in 2011, Lua briefly touched a top 10 position. Whether this is going to happen again is unknown. But it is clear that Lua is catching up in the game development market: easy to learn, fast to execute, and simple to interface with C. This makes Lua a perfect candidate for this job. One of the drivers behind the recent success of Lua is the very popular gaming platform Roblox, which uses Lua as its main programming language. –Paul Jansen CEO TIOBE Software

TIOBE also announced that C++ is the programming language of 2022. You can read the details of how and why at the TIOBE website, as well as see the runners up (C and Python). If you are a developer, you will find this information interesting.

Continue reading “TIOBE Index for January 2023 – Which Language is Most Popular?”

TIOBE Index for March 2022 – Which Language is Most Popular?

Have you seen the latest TIOBE rankings report?

The TIOBE Programming Community index is an indicator of the popularity of programming languages. The index is updated once a month. The ratings are based on the number of skilled engineers world-wide, courses and third-party vendors. Popular search engines such as Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube and Baidu are used to calculate the ratings. Observe that the TIOBE index is not about the best programming language or the language in which most lines of code have been written.

Scripting language Lua is back in the top 20 of the TIOBE index. In its heyday in 2011, Lua briefly touched a top 10 position. Whether this is going to happen again is unknown. But it is clear that Lua is catching up in the game development market: easy to learn, fast to execute, and simple to interface with C. This makes Lua a perfect candidate for this job. One of the drivers behind the recent success of Lua is the very popular gaming platform Roblox, which uses Lua as its main programming language. –Paul Jansen CEO TIOBE Software

You’ll also notice Python has moved to the top, and Java has lost some popularity and is down to 3th.

Continue reading “TIOBE Index for March 2022 – Which Language is Most Popular?”

TIOBE Index for January 2022 – Which Language is Most Popular?

Have you seen the latest TIOBE rankings report?

The TIOBE Programming Community index is an indicator of the popularity of programming languages. The index is updated once a month. The ratings are based on the number of skilled engineers world-wide, courses and third-party vendors. Popular search engines such as Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube and Baidu are used to calculate the ratings. Observe that the TIOBE index is not about the best programming language or the language in which most lines of code have been written.

Python started at position #3 of the TIOBE index at the beginning of 2021 and left both Java and C behind to become the number one of the TIOBE index. But Python’s popularity didn’t stop there. It is currently more than 1 percent ahead of the rest. Java’s all-time record of 26.49% ratings in 2001 is still far away, but Python has it all to become the de facto standard programming language for many domains. There are no signs that Python’s triumphal march will stop soon.– Paul Jansen CEO TIOBE Software

Continue reading “TIOBE Index for January 2022 – Which Language is Most Popular?”

TIOBE Index for November 2021

Have you seen the latest TIOBE rankings report?

The TIOBE Programming Community index is an indicator of the popularity of programming languages. The index is updated once a month. The ratings are based on the number of skilled engineers world-wide, courses and third-party vendors. Popular search engines such as Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube and Baidu are used to calculate the ratings. Observe that the TIOBE index is not about the best programming language or the language in which most lines of code have been written.

Since the start of the TIOBE index, more than 20 years ago, PHP has been a permanent top 10 player. Recently, we saw PHP struggling to stay in that top 10. PHP was once the master of web programming, but now it is facing a lot of competition in this field. This is not to say that PHP is dead. There are still a lot of small and medium enterprises relying on PHP. So I expect PHP to decline further but in a very slow pace. Two of PHP’s competitors, Ruby and Groovy, gain both 3 positions this month. Ruby from #16 to #13 and Groovy from #15 to #12. Other interesting moves this month are Lua (from #32 to #26), Dart (from #40 to #31), and Kotlin (from #38 to #33). — Paul Jansen CEO TIOBE Software

Continue reading “TIOBE Index for November 2021”

TIOBE Index for April 2021

Have you seen the latest TIOBE rankings report?

The TIOBE Programming Community index is an indicator of the popularity of programming languages. The index is updated once a month. The ratings are based on the number of skilled engineers world-wide, courses and third party vendors. Popular search engines such as Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube and Baidu are used to calculate the ratings. Observe that the TIOBE index is not about the best programming language or the language in which most lines of code have been written.

Objective-C’s fame came to a sudden stop when, in 2014, Apple announced that there was a new language called Swift that should replace Objective-C. Remarkably, it took a long time before Swift was more popular than Objective-C. Only 7 years after its death sentence, Objective-C is now leaving the top 20. But there is still hope for Objective-C because old languages sometimes strike back. Take a look at Fortran! This dinosaur is back in the top 20 after more than 10 years. Fortran was the first commercial programming language ever, and is gaining popularity thanks to the massive need for (scientific) number crunching. Welcome back Fortran.

Continue reading “TIOBE Index for April 2021”

TIOBE Index for January 2021

Have you seen the latest TIOBE rankings report?

The TIOBE Programming Community index is an indicator of the popularity of programming languages. The index is updated once a month. The ratings are based on the number of skilled engineers world-wide, courses and third party vendors. Popular search engines such as Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube and Baidu are used to calculate the ratings. Observe that the TIOBE index is not about the best programming language or the language in which most lines of code have been written.

C is still number one, but it is Python that claims the second position now. Some say that Python’s recent surge in popularity is due to booming fields such as data mining, AI and numerical computing. 

Continue reading “TIOBE Index for January 2021”

TIOBE Index for December 2020

Have you seen the latest TIOBE rankings report?

The TIOBE Programming Community index is an indicator of the popularity of programming languages. The index is updated once a month. The ratings are based on the number of skilled engineers world-wide, courses and third party vendors. Popular search engines such as Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube and Baidu are used to calculate the ratings. Observe that the TIOBE index is not about the best programming language or the language in which most lines of code have been written.

C is still number one, but it is Python that claims the second position now. Some say that Python’s recent surge in popularity is due to booming fields such as data mining, AI and numerical computing. 

Continue reading “TIOBE Index for December 2020”

TIOBE Index for November 2020

Have you seen the latest TIOBE rankings report?

The TIOBE Programming Community index is an indicator of the popularity of programming languages. The index is updated once a month. The ratings are based on the number of skilled engineers world-wide, courses and third party vendors. Popular search engines such as Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube and Baidu are used to calculate the ratings. Observe that the TIOBE index is not about the best programming language or the language in which most lines of code have been written.

C is still number one, but it is Python that claims the second position now. Some say that Python’s recent surge in popularity is due to booming fields such as data mining, AI and numerical computing. 

Continue reading “TIOBE Index for November 2020”

TIOBE Index for October 2020

Have you seen the latest TIOBE rankings report?

The TIOBE Programming Community index is an indicator of the popularity of programming languages. The index is updated once a month. The ratings are based on the number of skilled engineers world-wide, courses and third party vendors. Popular search engines such as Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube and Baidu are used to calculate the ratings. Observe that the TIOBE index is not about the best programming language or the language in which most lines of code have been written.

Programming languages used for teaching children to program have made significant movement towards the top 20 of the language lists, but this is expected in light of our current work-from-home environment. Another change is from now on “Visual Basic .NET” is called “Visual Basic” and the old entry “Visual Basic” is renamed to “Classic Visual Basic”.

Continue reading “TIOBE Index for October 2020”

A Quick Introduction to Scrum Methodology

Agile is a development method designed to add energy, focus, clarity and transparency to the project planning and implementation process. Scrum is probably the most widely used Agile framework for developing and managing complex projects. Scrum is used to successfully manage projects in which there is usually uncertainty and ambiguity at the early stages of the project, and the methods used help organize efforts to complete small pieces of an overall project as they are defined.

The entire project is split into a sequence of smaller iterations called Sprints. Each Sprint is time-boxed for less than one month (usually 2 weeks) and planned well in advance. Planning is completed not according to a set of prescribed tools, but according to the requirements as decided by the Scrum team. A self-organizing and cross-functional team identifies tasks and organizes team efforts to accomplish a well defined set of tasks in small 2-4 week increments of time. In order to achieve maximum cooperation among all team members, daily face-to-face communication is encouraged. The business stakeholders and the technical team assigned to the Sprint work in close collaboration to deliver of high-quality, working software at the end of each Sprint.

Continue reading “A Quick Introduction to Scrum Methodology”

Your Development Manager Might Hate You

Being a development manager is a tough job. You have to manage a group of skilled programmers to complete difficult tasks under unusually tight deadlines. As a development manager you are asked to deliver results from that group of programmers, and those results are usually linked to increased productivity or an improvement in revenue.  The last thing that manager wants is to face delays because of one difficult person or conflicts within the team.

If you are that difficult programmer or that person that is generating personality conflicts within the development team, you manager hates you. He might like you as a person, but he hates to work with you because you make him like difficult. In this article by Sotiris Zacharopoulos, we learn a little more about this subject.

“You, as a manager, are responsible for two separate teams. The first one staffed by developers who are Ninjas. Each one of them are developing with a total different approach. They are convinced that their suggested solution is better then the others. The second one staffed by developers who are team workers. They have more than basic programming skills but they know how to collaborate each other. Which team do you believe will bring the best results over the time?”

The first group will probably wasting energy on trivial matters. There will be unproductive competition. They will pay more attention to their ego. Even if they could be capable for quality code, the manager probably will spent valuable time on trying to solve behavioral problems. Behavioral problems are serious because is very difficult to improve personality characteristics.

The second group will be committed to their work. The only problem that the team will have is the level of knowledge. But, this could be solved relatively easily. It’s up to everyone to develop further their skill-set.

New Extensions for Visual Studio Projects

Development of your projects while using Visual Studio can be a little easier with a good extension. In this article by Terrence Dorsey, we see his review of 9 extensions that might help you select the best option for your team.

Back in February I pulled together a list of 9 New Visual Studio 2013 Extensions, and since then new releases haven’t slowed down a bit. Here are nine more new extensions, starting with several that specifically help organize the code-build-release cycle — from Git branch workflows to Continuous Integration and release management.

  • Release Explorer
  • Project Hero
  • CheckoutandBuild
  •  xRM CI for Dynamics CRM
  • GitFlow
  • RAML API Tools
  • Cordova-Angular Mobile Apps
  • Android Emulator
  • Web Accessibility

 

Development Code Reviews

Formal software development requires source code reviews. People make mistakes and you want a second set of eyes to take a look at the code to help reduce the likely possibility that there are some mistakes that have crept into the production code. It is also important to do code reviews to maintain compliance, as it is also a good way to find malicious code before it goes into production.

In a recent article on this subject, we learn more about why it is important, how to make the process work better, and some mistakes to avoid.

Let us remember, first of all, why we do code reviews. One of the most important goals of any professional software developer is to continually improve the quality of their work. Even if your team is packed with talented programmers, you aren’t going to distinguish yourselves from a capable freelancer unless you work as a team. Code reviews are one of the most important ways to achieve this. In particular, they:

  • provide a second pair of eyes to find defects and better ways of doing something.
  • ensure that at least one other person is familiar with your code.
  • help train new staff by exposing them to the code of more experienced developers.
  • promote knowledge sharing by exposing both the reviewer and reviewee to the good ideas and practices of the other.
  • encourage developers to be more thorough in their work since they know it will be reviewed by one of their colleagues.

20 Most Common Software Problems

After years years of software defect analysis performed by developers all over the world, we have common software development issues that we have all seen. These common software development problems appear in a wide variety of applications and environments, but are especially prone to be seen in poorly designed systems. This is not intended as a full and complete list, but examples of what I consider the most common.

1. Incorrect calculations – This is seen in functions such as financial and date calculations. The key determinant is whenever mathematical functions and mathematical operators are involved.

2. Incorrect data edits – This is when the software does not apply existing data edits correctly. For example, a data edit may be coded to prohibit the entry of the day of the month greater than “31”, but does not allow for the month selected to effect that limit. This would allow the entry of February 30 and other invalid dates.

3. Ineffective data edits – This is when data edits are in place and working correctly, yet still fail to prevent incorrect data from being entered into the system. An example of this is an alphanumeric address field that allows spaces to be entered before any numbers or letters in the address. Therefore, when searches or sorts are performed on the address field, the search or sort may not find the intended address.

4. Incorrect coding/implementation of business rules – This refers to the one of the most common sources of software problems – the mistakes that occur between what is intended to be developed or implemented and what is actually delivered. These defects can be traced back to incorrect, missing, or vague system requirements specifications, or to the misinterpretation of requirements specifications. If you are asking, “What specifications? What requirements?”, the incorrect coding or implementation of business rules is probably a common problem for you.

5. Inadequate software performance – This refers to slow system response times and transaction throughput rates.

6. Confusing or misleading data – This means that the data shown to users may be correct, but the users might not fully understand how to interpret the data. This is not a trivial problem. Lives have been lost because of someone’s failure to take the correct actions based on the data delivered to them from a computer system.

7. Software that is difficult to use – Many people have experienced first-hand the frustration of using software that is cumbersome, difficult to navigate, and requires several steps to perform simple tasks. This problem relates to a lack of understanding of how humans interact with computers and is also the result of a history of modifications that are not planned and coordinated to account for ease of use. For example, the addition of numerous workarounds over a period of time in legacy systems can have the overall effect of convoluting the original system design.

8. Obsolete software – Software that no longer works due to new hardware or support software changes – This refers to software that is based on functions found in older versions of databases and operating systems. An example of this can be found in old COBOL code that will not compile on new compilers due to the use of verbs that are no longer supported in the compiler. Many vendors try to make new releases of support software upwardly compatible, but there are usually cases where one minor area of non-support from the base system can cause a major revision of the system. The only other option is not to upgrade the support software. This decision can be justified for the short-term, but a point is usually reached where the software must either be replaced or modified.

9. Inconsistent processing – Software that only works correctly in one environment – This refers to software that has been designed for only one environment and cannot be easily transported and used in another environment. Of course, some software is designed to work in only one environment. However, if an organization adopts new technology that requires software be portable to new environments, then the software will need to be modified or replaced if it can’t meet the new technical requirements. An example of this is software that works in an MS-DOS environment, but will not work in a Microsoft Windows environment.

10. Difficult to maintain and understand – This refers to the ability of a programmer or developer to maintain the software. To maintain software, the person performing the maintenance must first analyze and understand the software. Much of the software in existence today was initially written in an unstructured manner and then patched on an as-needed basic over a long period of time. This type of software structure results in what is known as “spaghetti code,” which is complex and unstructured. To add to the problem, when changes are made to this kind of software, there is a higher risk of creating new defects unintentionally.

11. Unreliable results or performance – This means that the software does not deliver consistently correct results or cannot be depended to work correctly each time it is used.

12. Inadequate support of business needs or objectives – This refers to software that is inflexible to meeting business needs. For example, a system may be difficult to modify to meet and organization’s needs or may lack features to allow the users to customize business rules.

13. No longer supported by the vendor – This occurs when a vendor ceases to support a particular software product. This can occur due to the vendor’s decision to no longer support a product, due to the vendor going out of business, or the vendor selling the product to another vendor.

14. Incorrect or inadequate interfaces with other systems – This means that the software does not correctly accept input (data, control, parameters, etc.) from other systems or sends incorrect output (data, control, parameters, print, etc.) to other systems. An example of this is when a system has an electronic data interfaces (EDI) with external systems, but does not correctly receive or format the information.

15. Incorrect matching and merging of data – This refers to situations where data is obtained from one source and matched or merged with data from another source. Examples include sorting multiple files into a single file or table or matching data from a master file to an ID number entered as a lookup entry.

16. Data searches that yield incorrect results – This means that a search retrieves incorrect data as the result of a search. In the worst case situation, the data retrieved appears to be correct in format, but only by tracing back to source documents and other original data can it be determined that the data is incorrect for the search criteria. An example of this would be searching for the time worked by a particular employee in a payroll system. The employee’s name at the top of the information may be displayed correctly, but the detailed time data may belong to another employee. The only ways to verify the information would be to compare the time worked back to time sheets or to tables that indicate the employee ID.

17. Incorrect processing of data relationships – This means that data relationships are not created or maintained correctly between one or more data elements. These data elements can reside on interactive interfaces, reports, or files. For example, a system may allow a user to incorrectly enter a telephone area code invalid for the state specified in an address field.

18. Incorrect file and data handling – This refers to the software incorrectly retrieving data from files or tables. This could include retrieving the wrong data from the right source or the right type of data from the wrong data source. An example of this would be retrieving data from an old version of a file or table, thinking the data is being retrieved from the most current version. Another example is the inability of the software to process empty or full files correctly. A secondary problem could relate to the software’s inability to pass data correctly through the system. An example of this would be the incorrect processing of transactions, where data is inadvertently dropped during processing.

19. Inadequate security controls – This means that unauthorized access to the system is not adequately controlled and detected. In addition, people may also be able to perform transactions in excess of the authorization levels appropriate for their job functions. For example, a person without managerial levels of security access might be able to approve their own overtime. Or, a person not in the payroll department might be able to view the employee payroll files.

20. Inability to handle production data capacities – This refers to the software’s inability to process data at the level required by the organization. An example of this would be a system that is required to process financial transactions that exceed $10 million, but the system can only process amounts up to $9,999,999.99. Another example is the classic case of the Year 2000 computing problem, where dates in the Year 2000 and beyond are incorrectly recognized as being in the early 1900’s.

As I indicated at the top of this article, I do not presume to have presented the ultimate list of problem sources for poorly designed systems. If you have others, I would appreciate hearing your feedback.

Kemeny and Kurtz – The Invention Of BASIC

In May 2014 it is 50 years since the invention of the BASIC language. There may not be another language that can claim to have done more to change the way we use computers.

John G. Kemeny was chairman of the department of mathematics at Dartmouth College in Hanover, New Hampshire. In 1962, Thomas E. Kurtz, Dartmouth’s computing director, approached Kemeny with the idea of implementing a computer system at Dartmouth College. Both men were dedicated to the idea that liberal arts students should be able to make use of computers. Although the English commands of FORTRAN and ALGOL were a tremendous improvement over the cryptic instructions of assembly language, they were both too complicated for beginners. Kemeny convinced Kurtz that they needed a completely new language, simple enough for beginners to learn quickly, yet flexible enough for many different kinds of applications. The language they developed was known as the “Beginner’s All-purpose Symbolic Instruction Code,” or BASIC.

There were just fifteen statement types in the original BASIC.

  • LET Introduces the assignment statement, and is required
  • PRINT Provides free-form output
  • END Is required
  • READ Assigns values to variables from internal data
  • DATA Introduces internal data
  • GOTO Does just that, transfers to another line-numbered statement
  • IF Gives a conditional GOTO
  • FOR Introduces the looping construct
  • NEXT Terminates the looping construct
  • GOSUB Does a GOTO to a subroutine
  • RETURN Returns from the end of the subroutine
  • DEF Introduces programmer-defined functions
  • DIM Allows dimensioning arrays
  • REM Provides comments
  • STOP Same as reaching the END statement

Read more about this important subject here.

Dumping .NET – Microsoft’s Madness

Microsoft seems to be set on adopting HTML5 and JavaScript as its main application development tools for Windows 8. Does this signal this is the end of .NET? What does Microsoft see as the future toolset for developers in the future of Windows? There is an interesting article on the history of  .NET and were Microsoft seems to be headed in this article from Mike James, and this article by Edward Berridge.

The problem is that the current boom is in mobile and Microsoft doesn’t really do mobile. The PC is so passe and with it Windows is going out of the door and Microsoft seems to want to throw the entire .NET subsystem along with it.

Microsoft clearly has to do something, but at the moment it looks like insanity has taken hold. To bet the farm on HTML and JavaScript being the next big thing is a good bet, but its not a bet that Microsoft can easily take and make good. Even if the world does turn to JavaScript and platform-independent apps this still means that Microsoft loses.

The problem is that Microsoft needs a technology that gives it an edge and HTML/JavaScript is everybody’s edge.

Were do you see the future of Microsoft development tools? Is .NET going to die?

Microsoft’s New Open-Source JavaScript Library

Microsoft’s Build Conference has catered to Windows developers, chiefly the traditional developers who crafted products for Windows platforms. Microsoft took a turn to embrace Web and mobile developers when it announced it would release an existing JavaScript framework, WinJS, as open source.

WinJS is a set of JavaScript toolkits that assist developers in building HTML/CSS/JS applications, especially for Windows apps on the Web, Android and iOS. And now it’s an open-source project, so developers can contribute to it on GitHub even as they utilize it.

Like Angular, Backbone, or EmberJS, the free WinJS is a framework that developers can choose to use on a per-project basis, depending on whether it meets their needs. There is no use case in which a developer must use WinJS in order to deliver a Windows app.

That’s why Microsoft is pinning its hopes on WinJS being more appealing than any of the existing frameworks. Here are some of the features they hope you’ll consider:

  • WinJS is designed to help you build web-based apps, that includes HTML5. A slew of distinct components provide pre-written code for useful features like lists and grids so you can shortcut your app.
  • WinJS’s ultimate goal is to make Windows apps look more like what today’s consumers expect apps to look.
  • Node.js is a required component of building WinJS on your local machine. Presumably, by working on top of Node, WinJS is able to deal especially well with asynchronous tasks, like chat and other user interactions, within apps.
  • WinJS libraries especially cater to the needs of business apps on the Web, from a Microsoft perspective.
  • If you don’t want to stop working in your preferred JavaScript framework but still want to use WinJS features, Microsoft is one step ahead of you. There are already adaptors for the Angular, Knockout and JQuery frameworks built-in, so your Angular developed project, for example, could incorporate WinJS library features.

Read more about WinJS here and here.

If you had to start over, what technologies would you learn in 2014?

If you had to start your technology career all over again, what would you do differently? Scott Hanselman asks this question in his blog post from a few days ago.

 

While some have been programming for decades, some are just starting. If you were just starting today, knowing what you know, how would your career be different? Would you have taken your job skills in a different direction? Would you have focused on different technologies? Might you have developed different skills?

This question comes up a lot. I tell people this.Learn one language you can build large systems with AND also learn JavaScript. For me, that’s C# and JavaScript. For someone else, the “systems” language might be Erlang, or Groovy, or Ruby, or Java, or Scala. That language matters less to me. Your goal is to be able to write applications for the web, as well as write other systems.

What would you have done differently? And knowing what you know today, what will you do differently today to prepare for tomorrow? What advice do you have for the new technology student of today? Jump over to Scott’s post and let him know what you think about this subject.

%d bloggers like this: