According to Wikipedia, the Fortran was launched in 1957 and is considered the first commercially available programming language. A github search shows 6,743 repositories as of October, 2020. If you want, you can easily find out that code written in Fortran, as it consists of widely-used keywords, is still intelligible.
subroutine random_string(string) implicit none character(len=*),intent(out) :: string integer :: i,j real(dp) :: xi do i=1,len(string) call random(xi) j = int(xi*26._dp) call random(xi) if(xi < 0.5) then j = j + 65 else j = j + 97 end if string(i:i) = char(j) end do end subroutine random_string
It does mean, that the idea of writing code is way more than 50 years old now!
Higher levels of abstraction
Working with abstractions is definitely one of the basics of nowadays programming languages. Lines of code create classes, classes build up to modules, modules are gathered into applications and so on.
At the top of it, there’s the highest level of abstraction – the idea. At the end of the day, what the program does is what the developer wants to model as a process.
The more intricate the idea, the more likely the stakeholders will create some diagram to both streamline understanding and document the whole thing. And this diagram is at least one level of abstraction above text files with code, yet applications won’t build up to diagrams!
Problems with typing code
Writing code as text files is a no-brainer because “everybody does that” and the abundance of tools to leverage the process is great. Yet there are issues we all encounter which are inherent to this idea. To name a few:
- tabs vs spaces
- where to put curly bracket
- using tools to enforce some coding standards and code quality
- keeping names consistency between code and documentation
- creating hierarchy by hand
- code is not intelligible to business people
- ideas from diagrams have to be actually implemented in code
What is the higher level of abstraction?
Software development is, of course, evolving so now we compose applications from smaller packages and build systems from microservices. Yet you still cannot sit together, draw a concise diagram, agree that “it is how this should work” and have a working system. Or can you?
The fact that surprises me is that the idea of visual programming is a thing, however it’s not really endorsed. Like, Microsoft and others tend to boast themselves with new ways of writing code, extending IDEs to handle more ways to do what already can be done. No revolution so far.
Maybe one day software development will consists of drawing flow charts and compiling them?