|
Unfortunately I do remember FORTRAN 77. It has been so long since I worked with it. I even remember working with the earlier FORTRAN. I think I remember a book called 10 statement FORTRAN that I used. I was not enamored with FORTRAN 77 mainly because it seemed like some Computer Scientists had gotten hold of it and added all this stuff for making it a general purpose programming language and not extending the math capabilities. The one thing that FORTRAN had that made it special was handling of Complex Numbers. I thought that it should have been extended to handle arrays--There were already other languages available for general programming.
|
|
|
|
|
Maybe I misunderstand what you are saying: Fortran always handled arrays, at least from Fortran 2, with 1-based indexing.
One fun detail: This 16 bit minimachine (that is, the size of a full height fridge) I was working with in the early 1980s used a 3-word (i.e. 48 bits) floating point format. The machine had an instruction called MIX3, which decremented the value in the accumulator and then multiplying by 3. MIX3 was tailor made for changing the "logicial" (1-based, 48 bits) Fortran index into a "physical" (0-based, 16-bit word) memory address. If you worry about tne "multiplication" being time consuming: It really was an addition of the accumulator, shifted one bit up, to itself, so it was faster than an ordinary add (which required an operand access).
Yes, other languages were available - Pascal dates back to 1970, and honestly: From a language design point of view, it is far, far better than the entire C group of languages. (However, it failed in system programming ascpects; a standard Pascal program resided in a single source file. If the standard had included modularization concepts, it should have beaten C to the ground...).
What kept Fortran up for so long was "the same old story": Legacy code. Fortran IV was The Standard for offering open source code (open source did NOT start with Linux!). ACM offered a huge collection of several thousand Fortran IV functions for every imaginable mathematical, engineering, or otherwise scientific, operation. I even worked on a machine whose operating system was written in Fortran (in the days when it was considered 'impossible' to write an OS in anything but assembler).
I think of old Fortran with no regrets or complaints, and enjoy all those jokes and ways of speech that came out of Fortran. Like "You can program Fortran in any programming language" (to refer to unstructured, bad code). Or "God is real, unless explictly declared integer". And then the beauty from a Xerox Fortran programming manual: "The primary purpose of the DATA statement is to give names to constants; instead of referring to pi as 3.141592653589793 at every appearance, the variable PI can be given that value with a DATA statement and used instead of the longer form of the constant. This also simplifies modifying the program, should the value of pi change".
|
|
|
|
|
Sorry I was not clear, I should have said matrix operations. Yes they had multidimensional arrays, but not matrix operations. they did add it later. The reason they did was more so that FORTRAN could be better applied to multiprocessor architectures.
|
|
|
|
|
OK, then I am with you - but for the full complement of matrix operations to be available, you have to move into our millenium .
You had all the matrix you could think of in the open source ACM libraries, in Fortran IV syntax, from the 1970s, so you didn't have to write the functions yourself (if you were, or knew someone who was, a member of the ACM) - but the syntax is of course a lot sweeter when matrix operations are first class language elements.
Regarding parallell operations: With the Cray supercomputer, you had library functions for directly utilizing on the Cray vector registers. However, the Cray Fortran compiler was well known for vectorizing even scalar operations: If your program made, say, ten independent scalar multiplications with no ordering requirements, the compiler might collect them and set it up as one single vector multiply. In principle, this is not much more than reordering independent operations for better use of registers in a single-stream CPU, but Cray took it to extremes.
|
|
|
|
|
Yes I know they did update it years ago. My complaint is that it should have been put into FORTRAN 77. Given that it was originally the programming language for science/engineering, and I was using it in a scientific application back when FORTRAN 77 was released, would have made a lot of sense in improving its ability to handle physics and math problems instead of having to roll your own functions, or having to include the ACM libraries. It is understandable that the early version had complex numbers, and that most modern languages like C, C++, C#, etc. do not even have special functionality of complex numbers. That so much work has been put into FORTRAN compliers to better support parallel operations also makes a lot of sense since quite often scientific calculations can be excessive compute bound.
|
|
|
|
|
Reminding me of a fellow student (long, long time ago!) writing his programs using variable names like I001, I002,... F001, F002 (for floating point values). Before handing in the exercise he would to a global replacement of, say, I001 with 'NumberOfEggsPerBox' or someting like that. Writing those long names while developing the program would require too much typing, he argued.
Also it served as a limited 'copy protection'. It was too easy in those days to access the work of fellow students, to use as a basis for your own exercise solution. Martin never had his half-finished work 'stolen' - understanding it (before the last-minute variable name replacement) required as much effort as developing your own solution.
|
|
|
|
|
|
Damn you beat me to it by 15 min
Tom
|
|
|
|
|
|
Back in the Dark Ages, I worked with DEC's RT-11 operating system. It was written in PDP-11 assembler. I had the opportunity to look at the commented source code, and I remember the following line:
NOP # We don't know why it's here, but it doesn't work without it.
In a proprietary OS. From the manufacturer of the CPU.
Sometimes commentary will reveal far more than you ever wanted to know.
Freedom? That is a worship word.
-- Cloud William
The only thing a free man can be forced to do is die.
|
|
|
|
|
Like http://geek-and-poke.com/geekandpoke/2013/7/28/tdd[^]
While we are talking about assemblers: Long time ago (around the RT-11 times), I looked into the source code of the assembler, of course written in assembler. Yes, the code was commented. Only that each and every comment was like 'Smart trick here!' and 'This is messy but it works' or 'Faster than [...]'. And the module heading (that is if you consider an assembler source file a 'module' ), there was a comment referring all questions, problems and bugs to R.S, which at the time when I read it, was the CEO of a 3000 man company...
|
|
|
|
|
#SupportHeForShe
Government can give you nothing but what it takes from somebody else. A government big enough to give you everything you want is big enough to take everything you've got, including your freedom.-Ezra Taft Benson
You must accept 1 of 2 basic premises: Either we are alone in the universe or we are not alone. Either way, the implications are staggering!-Wernher von Braun
|
|
|
|
|
I've found that one of the hardest parts of documenting (besides overcoming the initial inertia) is to do what I call philosophical documentation.
Don't write what the code does; I can read it and tell you that. Write why you're doing that, why you chose that technique over this one, stuff like that.
|
|
|
|
|
For sticking to philosophical terms: You say that we shouldn't document the extension, but the intention.
Which fits well with the more colloquial use of the term: You document what the program was intended to do, if it was bug free. That is not necessarily what it actually does
|
|
|
|
|
Indeed.
#SupportHeForShe
Government can give you nothing but what it takes from somebody else. A government big enough to give you everything you want is big enough to take everything you've got, including your freedom.-Ezra Taft Benson
You must accept 1 of 2 basic premises: Either we are alone in the universe or we are not alone. Either way, the implications are staggering!-Wernher von Braun
|
|
|
|
|
Exactly
#SupportHeForShe
Government can give you nothing but what it takes from somebody else. A government big enough to give you everything you want is big enough to take everything you've got, including your freedom.-Ezra Taft Benson
You must accept 1 of 2 basic premises: Either we are alone in the universe or we are not alone. Either way, the implications are staggering!-Wernher von Braun
|
|
|
|
|
My Personal favorite (found in actual production code):
// Rather complicated - as in WTF was I thinking?
DB
It's a hard life.
But somebody's got to live it, if only to act as an inspiration to others.
|
|
|
|
|
|
John Woods said it best, and the same applies for comments:
Always code as if the guy who ends up
maintaining your code will be a violent
psychopath who knows where you live.
|
|
|
|
|
|
From what I can see, the only way to use the nice new features in MVC6 (tag helpers, view components, etc.) is to create a console application running its own web server, and then use IIS as a "reverse proxy" to forward requests to that server.
Servers — ASP.NET documentation[^]
So instead of requests coming in to IIS, being handled by ASP.NET, and then returned to the client, we get requests coming in to IIS, being picked up by a native module, forwarded on to a different web server hosted in a console application, processed, returned to the native module, and then being returned to the client.
And because it's an external process, you have to jump through hoops[^] to update the files, since they're always in use.
Not to mention the additional hassle of changing the configuration, with no GUI option, and the possibility that some of the settings can't be changed without recompiling.
If I'm targeting the full framework, and hosting on Windows, why the elephant would I want to host the code in anything other than IIS?
Please tell me I'm missing something? If not, I'll be sticking with v5.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
It seems you missed something...
A ASP.NET Core application needs some host - different from IIS - to run, and that comes from the cross-platform requirement...
However tag helpers can be used in standard (old fashioned ) MVC 6 too...
Try this: A Complete Guide to the MVC 6 Tag Helpers – Canadian Developer Connection[^]
Skipper: We'll fix it.
Alex: Fix it? How you gonna fix this?
Skipper: Grit, spit and a whole lotta duct tape.
|
|
|
|
|
Are you sure about that? I can't find any documentation (other than for early betas) on hosting an MVC6 application directly within IIS. Everything I've seen says you have to deploy it as a console application + reverse proxy. And I can't see anything in that blog post to contradict that.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
|
Wow.
Once upon a time I used to write code, dump the files in my wwwroot directory and IIS would run it.
I understand why Microsoft exploded the ecosystem in order to embrace and extend competing platforms, but they need to tidy up the rubble a little. Regressing development by making infrastructure management such a big part of development is a bad idea.
There once was a move to let developers focus on just their core business logic. I miss those days.
cheers
Chris Maunder
|
|
|
|