|
I think I may not have been clear in my point because I don't understand what you're asking me.
I'm not saying Pascal is better than C or the other way around.
I'm saying Pascal is a language that was not originally written in C. It was written in Fortran, after which it was bootstrapped to be written in itself.
ken@kasajian.com / www.kasajian.com
|
|
|
|
|
It sure looks like you are proposing that Pascal is a better language than C, based on certain criteria. Pascal is indeed a very good language and I really liked it when I was using it in college, but I haven't used it since, and I can't even read/understand the code I have from that period.
Kenneth Kasajian wrote: Pascal is a language that was not originally written in C
Nor was C.
Kenneth Kasajian wrote: after which it was bootstrapped to be written in itself
As was C.
You'll never get very far if all you do is follow instructions.
|
|
|
|
|
No, you have completely missed the point of my message. Go back and re-read it.
What I am saying is that, a lot of people bash C but those same people don't realize that whatever language they prefer is probably written in C. So I challenged the readers to name a language that was not written in C.. because it's hard to do. Most new languages, VB, JavaScript, Python, Ruby all written in C.
However, there are languages not originally written in C, although they are old. Pascal is one, which is the one I mentioned to get the ball rolling.
You're being unnecessarily antagonistic without understanding, or taking the time to read, what I'm saying. I suggest you drop it.
ken@kasajian.com / www.kasajian.com
|
|
|
|
|
Sooo... your post is totally unrelated to Chris' prompt for discussion of languages that are or are not better than C. OK.
Kenneth Kasajian wrote: Go back and re-read it
I have read it many times, always in the context of the thread.
Kenneth Kasajian wrote: a lot of people bash C but those same people don't realize that whatever language they prefer is probably written in C
So what?
Kenneth Kasajian wrote: I challenged the readers to name a language that was not written in C
You could have made that clearer.
Kenneth Kasajian wrote: not originally written in C ... Pascal is one
Pascal pre-dates C slightly, it certainly pre-dates C's popularity. COBOL, Fortran, and BASIC also pre-date C.
You'll never get very far if all you do is follow instructions.
|
|
|
|
|
Also to answer the more specific question, I don't think the language has anything to do with 64K limits, for strings, or otherwise. Those are all implementation details of specific compilers.
ken@kasajian.com / www.kasajian.com
|
|
|
|
|
Kenneth Kasajian wrote: implementation details of specific compilers
That may well be, but is it not part of the Pascal language spec that a string is limited to 255 characters because the length is stored in the first byte of the string?
I suppose not every implementation uses 8-bit characters, but it still imposes a definite limitation other than "available system resources".
You'll never get very far if all you do is follow instructions.
|
|
|
|
|
Okay, although it's true that one can implement Pascal differently, you're right that it's limited to 64K (or 32K) in length for strings.
But I really don't think that's a good example of Pascal's inferiority over C. There's advantages to counted-strings, and I've worked in environments where actually simulated Pascal strings in C for efficiency (i.e. you can easily get to the length). COM BSTRs use a similar structure, but store 32-bit lengths.
And the reason I don't think it's a limitation is because if you needed a string that long, C's null-terminated string is hardly preferable. You likely need a different data-structure (rope, array of strings) to do whatever you're doing anyway. Or, more likely, it's that big, it's probably a memory buffer that you'd manage using address and count.
As a reminder, my initial post was not stating Pascal is better than C. It was to point out that many of today's languages are written in C.
ken@kasajian.com / www.kasajian.com
|
|
|
|
|
Kenneth Kasajian wrote: I don't think it's a limitation
Perhaps you just don't find the limit to be a hindrance. I never had any trouble with it either, but I never had to use Pascal to do real-world development.
Just as .net strings are limited to 2GB -- it's a limit, but it hasn't yet been a hindrance.
Kenneth Kasajian wrote: C's null-terminated string is hardly preferable
They certainly have some disadvantages, but at least they're easy to work around.
You'll never get very far if all you do is follow instructions.
|
|
|
|
|
Visual basic 2013.
It can utilize every C, C++, and C# library.
Plus it looks pretty.
For example the "with" operator is in Visual basic but is not in C.
|
|
|
|
|
Colborne_Greg wrote: the "with" operator
...is useless filth.
You'll never get very far if all you do is follow instructions.
|
|
|
|
|
Which is more readable to everyone, and which uses less lines?
Public Shared Function RotateStream(stream As IsolatedStorageFileStream, angle As Int16) As WriteableBitmap
stream.Position = 0
Dim bitmap = New BitmapImage()
bitmap.SetSource(stream)
Dim WriteableBitmapSource = New WriteableBitmap(bitmap)
Dim WriteableBitmapTarget As WriteableBitmap
Dim Target As Int64
With WriteableBitmapSource
Select Case angle
Case 360 : Return WriteableBitmapSource
Case 180 : WriteableBitmapTarget = New WriteableBitmap(.PixelWidth, .PixelHeight)
Case Else : WriteableBitmapTarget = New WriteableBitmap(.PixelHeight, .PixelWidth)
End Select
For xAxis = 0 To .PixelWidth
For yAxis = 0 To .PixelHeight
Select Case angle
Case 90
Target = (.PixelWidth - yAxis - 1) + (xAxis * WriteableBitmapTarget.PixelHeight)
WriteableBitmapTarget.Pixels(Target) = .Pixels(xAxis + yAxis * .PixelWidth)
Case 180
Target = (.PixelWidth - xAxis - 1) + (.PixelHeight - yAxis - 1) * .PixelWidth
WriteableBitmapTarget.Pixels(Target) = .Pixels(xAxis + yAxis * .PixelWidth)
Case 270
Target = yAxis + (.PixelWidth - xAxis - 1) * WriteableBitmapTarget.PixelWidth
WriteableBitmapTarget.Pixels(Target) = .Pixels(xAxis + yAxis * .PixelWidth)
End Select
Next
Next
End With
Return WriteableBitmapTarget
End Function
versus without
public static WriteableBitmap RotateStream(IsolatedStorageFileStream stream, int angle)
{
stream.Position = 0;
if (angle % 90 != 0 || angle < 0) throw new ArgumentException();
int target;
BitmapImage bitmap = new BitmapImage();
bitmap.SetSource(stream);
WriteableBitmap wbSource = new WriteableBitmap(bitmap);
if (angle % 360 == 0) return wbSource;
WriteableBitmap wbTarget = null;
if (angle % 180 == 0)
{
wbTarget = new WriteableBitmap(wbSource.PixelWidth, wbSource.PixelHeight);
}
else
{
wbTarget = new WriteableBitmap(wbSource.PixelHeight, wbSource.PixelWidth);
}
for (int x = 0; x < wbSource.PixelWidth; x++)
{
for (int y = 0; y < wbSource.PixelHeight; y++)
{
switch (angle % 360)
{
case 90:
target = (wbSource.PixelHeight - y - 1) + x * wbTarget.PixelWidth;
wbTarget.Pixels[target] = wbSource.Pixels[x + y * wbSource.PixelWidth];
break;
case 180:
target = (wbSource.PixelWidth - x - 1) + (wbSource.PixelHeight - y - 1) * wbSource.PixelWidth;
wbTarget.Pixels[target] = wbSource.Pixels[x + y * wbSource.PixelWidth];
break;
case 270:
target = y + (wbSource.PixelWidth - x - 1) * wbTarget.PixelWidth;
wbTarget.Pixels[target] = wbSource.Pixels[x + y * wbSource.PixelWidth];
break;
}
}
}
return wbTarget;
}
Visual basic is better
|
|
|
|
|
OK, now use with to copy values between two instances.
You'll never get very far if all you do is follow instructions.
|
|
|
|
|
You can't think outside the box can you.
Usually I would do something like this to copy a class
Public function copy(byval ojbectName as objectType) as objectType
Return objectName
end function
There are many ways of getting values from one structure to another, not just with the use of methods. Lastly this points out that you should be utilizing different methods of programming to get a result instead of manually coding each line out.
|
|
|
|
|
Colborne_Greg wrote: to copy a class
Not copying everything; just some values.
You'll never get very far if all you do is follow instructions.
|
|
|
|
|
If you only want a few of the values use visual basic reflection.
|
|
|
|
|
reflection ???!!!
You'll never get very far if all you do is follow instructions.
|
|
|
|
|
Interesting that your signature is "You'll never get very far if all you do is follow the instructions" fitting for this tread isn't it
|
|
|
|
|
Have you read the article?
Colborne_Greg wrote: It can utilize every C, C++, and C# library.
C can be plugged into any application in any language. The author is aware that C itself lacks libraries and he does mention it. So what was your point again?
Colborne_Greg wrote: Plus it looks pretty.
Ah that.
Ok, seriously. If you meant it has a better readability, that was mentioned by the author, too. So, again the question, what was your point?
Colborne_Greg wrote: For example the "with" operator is in Visual basic but is not in C.
And it's in Pascal. So what? Again, the author made a point that other languages offer more (and often more complex) language elements - but that doesn't deterr him from listing a number of advantages of the language C that you failed to address entirely.
Disclaimer: I don't actually agree with the article. I just wanted to point out that the article already pointed out or implied everything you said, and you did nothing to argue against it. (if that was your purpose)
|
|
|
|
|
Your signature has a line about GOTO
The goto fail example is a major fail in general for the C language.
The goto is the first thing every programmer should avoid, but in this example the GOTO's are used correctly, but its a limitation of the C language (one of the dumbest things in history I might add)
Visual basic .net is C with English words and no bracket issue, the GOTO fail would never had been an issue in VB.
|
|
|
|
|
You've completely missed my point.
My sig should have made it obvious I abhor the use of goto. I merely pointed out a possible reason why case may have been specified the way it is. Not that I wouldn't like to ban goto from the language entirely. And not that I would miss the switch statement for that matter (not much anyway). It was just a statement about the consistency of the language as a whole.
As for your love of Basic - to each their own. It certainly has it's use for certain kind of applications. Me, I've been working on processing-intensive applications for decades, and no Basic dialect whatsoever, not even the compiled ones, would ever have served the purpose.
That said, I'll remove the link from my sig: as you've pointed out, the main reason for the problem isn't so much the use of goto - it is the fact that braces (or other block markers) are only optional after control statements, combined with an unlucky duplicate line of code - that this line contains a goto command is just happenstance, many other commands would have caused havoc as well.
On a sidenote:
Colborne_Greg wrote: Visual basic .net is C with English words and no bracket issue, the GOTO fail would never had been an issue in VB.
Which part of go to isn't english? Just wondering...
|
|
|
|
|
I programmed Unidex in visual basic, there isn't a conditional statement involved in retrieving a value from a serialized file (no sql) it can handle creating 8 million records an hour, and can read 2.3 billion records an hour.
|
|
|
|
|
You didn't get the point of anything I said. But nevermind. I've got it that you prefer VB from your first posting. That's fine. Have a nice day.
GOTOs are a bit like wire coat hangers: they tend to breed in the darkness, such that where there once were few, eventually there are many, and the program's architecture collapses beneath them. (Fran Poretto)
|
|
|
|
|
As already noted, one can write terribly in any language, programming or "natural".
If writing systems level code: C or C++
If writing business system code: Modern COBOL
If writing science/engineering code: Modern FORTRAN.
If a masochist (or given no choice): Assembler
If writing modeling system: (Probably still) SIMSCRIPT
If writing WEB pages: HTML/CSS, but many IDEs now available to make this easier.
50 years of programing using 30+ languages including BASIC, VB, JOVIAL, HAL, 15+ assemblers, PL/1, APL, ALGOL, C/C++, HTML, JAVA, PYTHON, PERL, etc.
Charles Wolfe
C. Wolfe Software Engineering
|
|
|
|
|
Any time anyone thinks that one technology is "better" than another then first they need to define what "better" means.
And since the statement doesn't limit itself to which other language is compares itself to it is going to fail because for any measurable attribute there is going to be some language which is in fact better than C.
|
|
|
|
|
Funny, I thought the language to-go was Fortran?[^]
Now I'm waiting on a corresponding article about COBOL
|
|
|
|