I can't wait to see the Minecraft Redstone implementation.
@Thisone953 жыл бұрын
I mean you could probably beat the 294 seconds. Would be interesting to see
@d.l.74163 жыл бұрын
EDIT: turns out i forgot how sieves work and misunderstood the problem, here's the correct version: You only need to be able to do a thing for each prime up to 1000 (sqrt of 1 million) So thats 168 * 6/20 = 50.4 seconds if you can do a thing every 6 ticks (which is possible) And you only need to be able to count to 1000 (because you only need primes up to sqrt(1,000,000) to do the sieving) And that only takes 10 bits. So you only need something on the order of 100 million blocks (exactly how much it is idk). Lag would be a big problem tho. I have an idea which probably works and would be able to run in the theoretical 50.4 seconds on a hypothetical supercomputer, and I'm gonna start making it. (before the edit i massively miscalculated and got 3 days so 52 seconds is a lot better lol)
@херзнаетгражданинЕбеньграда Жыл бұрын
@@d.l.7416 i don't see why you need to find 1 million primes, nor do you need a modulo operator
@d.l.7416 Жыл бұрын
@@херзнаетгражданинЕбеньграда the test is finding 1 million primes so you need to find 1 million primes. the algorithm is a sieve and sieves require modulo or something as complicated to build in minecraft
@херзнаетгражданинЕбеньграда Жыл бұрын
@@d.l.7416 The task is to find positive primes that are smaller than 1 million
@DavesGarage3 жыл бұрын
I re-uploaded this in HD 1080p60 because some folks were only seeing it in 360p. My apologies if this is a dupe for you this morning!
@dogee19853 жыл бұрын
Thank god! Spent half an hour trying to figure out why the video was bad quality
@meanbeach51093 жыл бұрын
Seems perfect now!
@deefdragon3 жыл бұрын
Worth marking In the titles that this is an HD re-upload, and that the old one is SD only.
@ebol083 жыл бұрын
Should remove the other one'
@jackgerberuae3 жыл бұрын
@@ebol08 no, we will lose the comments
@nattyman00073 жыл бұрын
Putting the episode number in the video title may be more clear that this is a series. Otherwise, I'm excited to see the whole thing :)
@DavesGarage3 жыл бұрын
Will do for future!
@DavesGarage3 жыл бұрын
Done and done for this one as well. Thanks for the suggestion!
@rayford34303 жыл бұрын
@@DavesGarage Hmmm, Richard Stallman would have numbered it E00 .
@loloknight3 жыл бұрын
If you could add timestamps that would help a lot! Thanks great work
@acherongoon3 жыл бұрын
@@loloknight I actually like listening to Dave's talk, some of the asides are interesting (and funny) -- thanks Dave. Timings would lead away from the stories and discussions.
@hypersonic123 жыл бұрын
Ok I’m hooked and looking forward to the next episode! Great concept
@tekman823 жыл бұрын
Well, well... this project will be a rosetta stone in the future.
@boluaygepong59203 жыл бұрын
Facts‼️😭
@TheFinagle3 жыл бұрын
The answer to what is the fastest language always starts with "For what task?" for me. Some are optimized for high order math, some are efficient at memory management for large data manipulation, others are built with other kinds of tasks in mind. I have yet to hear of any one language that is perfectly optimized for all possible operations or tasks.
@NymezWoW3 жыл бұрын
Good luck finding any scenario or task where for example Python outperforms C. Some languages simply are faster than others.
@nicolaslandau46923 жыл бұрын
@@NymezWoW Python is faster at being written if that counts.
@tenhovergonha87392 жыл бұрын
@@NymezWoW I use JavaScript because it's fastest to me to program in any computer that have at least a browser and a notepad... (No need for internet to download anything more)
@nosuchthing82 жыл бұрын
@@nicolaslandau4692 no
@gabrielbarrantes69463 ай бұрын
@@nicolaslandau4692is it? Lack of typing causes many bugs adding to development time
@nitrouspeed35833 жыл бұрын
I bet Dave’s “recreationally fluent in C#” is still on par with the guys who wrote Unity
@Alche_mist3 жыл бұрын
While I really don't bet against (I'm inclined to agree), do you know that the Unity itself was written in C++ (C# is used as its scripting language)?
@nitrouspeed35833 жыл бұрын
@@Alche_mist I didn’t, but I know now
@Alche_mist3 жыл бұрын
@@analogfeelingshateswin32 Which still means that "the guys who wrote Unity" most probably did more C++ than C#. After all, game engine cores are rather huge and complex projects.
@di3803 жыл бұрын
I would also like to point out that results might vary greatly depending on the compiler. Even with C++ you can see performance differences between different compilers on the same exact code implementation.
@GregMoress3 жыл бұрын
Exactly. The language makes no difference, other than making conveniences available, such as object-orientation.
@falklumo3 жыл бұрын
@@GregMoress Yes, but some languages are more susceptible to compiler optimizations than others. E.g., Fortran which can beat assembly written by mere mortals.
@Tom55data3 жыл бұрын
@@GregMoress Yes it does, some languages have primitives and some do not, which is very significant for computation - some languages have better implementation of high precision numbers, some languages have better implementations of string (multiple-byte representations of languages) and so on. In real cases we have to deal with large data flows (genomics), rapid calculation (interactive 3D manipulation for example), or just calculations of high precision data (machine learning). Although the quality of compilers is important, the ability of a compiler to take logic implementations and create machine code that is efficient ends up at a limiting point based on the underlying structure of the language and its design to make it easy for a user and create code efficient for a chipset. For example; how can an interpretive language fully implement refactoring of code or code look-ahead when it is interpreting one line at a time.
@MrKentaroMotoPI3 жыл бұрын
Yep. I have Fortran coal reactor chemistry codes that are ~10K lines. The Intel compiler executables run ~ 8x faster than GNU (Gfortran) compiler executables. AVX optimizations on GNU yield nothing. On Intel, they yield about 30%.
@compuholic823 жыл бұрын
Indeed. Compilers can make radical a difference and in some (usually rather simple cases) even change the complexity class of an algorithm. If you write a simple program that sums the numbers from 0 to N in a loop some compilers recognize that and replace the loop with a closed-form solution. So you have replaced an O(N) algorithm with an O(1) algorithm. So it is debatable whether a comparison between languages makes sense if the algorithm that is executed on the machine actually differs from the algorithm you wrote. Check out the KZbin video "What has my compiler done for me lately" if you like compiler magic.
@lepidoptera93373 жыл бұрын
The fastest computer language in the world is the correct algorithm for the problem.
@tech58823 жыл бұрын
Delphi and it's open source alternatives (Lazarus etc) are still VERY popular among independent Windows tools devs.
@fonkbadonk5370 Жыл бұрын
Glad to see this comment in the wild. Pascal and its derivatives get a lot of pity these days, but I've sustained a good living for the last >25 years by writing indvidual one-off tools for specific customers using Delphi. It has been able to generate mobile apps for years as well. It's a modern language with a (still mostly) healthy ecosystem. The one complaint I have is, that its documentation has been taking a steep dive during the last couple of years, making it nearly necessary to get a version with full sources to properly learn what lib function behaves how. I'd say it suffers a LOT more due to its undeserved reputation, instead of its actual merits.
@travails38293 жыл бұрын
Delphi has an optimizing compiler that was always ahead of its time. Would have been nice to see the results.
@ryan-heath3 жыл бұрын
Isn't the best compiler the winner, and not necessarily the language it compiled?
@whatevah6663 жыл бұрын
That would be a huge part of it, yes :)
@paulburger99043 жыл бұрын
Jip, it's all about which compiler produced the best machine code.
@kaseyboles303 жыл бұрын
To a large degree yes. However it's possible some constructs in some languages are very hard to translate to efficient machine code. And of course as time goes on and effort is applied the compiler for a language will tend to get better. That said there can be a trade off between speed and size. Also not all languages are compiled.
@klaxoncow3 жыл бұрын
Indeed. And if the programmer was good enough - and time was no object - then assembly language would be intrinsically impossible to beat. Because every other language is being translated into machine code, and assembly language is just human-readable machine code. So, you know, anything a compiler could potentially do could, at least in theory, be simply manually duplicated in assembly language. "Anything you can do, I can do better. Anything you can do, I can do as well". Of course, in practice - which is why I stipulated that "time was no object" - reaching, and then exceeding, all possible compiler output would not be quick and it would not be easy. But it is always, by definition, possible. So, like, no-one ever really uses assembly language, other than for small performance-critical routines, as it's too slow and impractical for the majority of programming. (And, indeed, with assembly language, there's a fundamental "cheat" available that no other language can do - first, use your compiler and obtain its assembly output, then go through it and make improvements. So, again, assembly language, by definition, is intrinsically impossible to beat. As you can actually USE the other languages to produce assembly output and then manually tweak it to be just that slightly bit better. The reverse ain't possible.)
@kaseyboles303 жыл бұрын
@@klaxoncow A couple decades ago I would have completely agreed with you. However with modern cpu's so much is going on that it's unlikely a human could out-optimize a good compiler. Now with out of order executions, multiple layers of cache, hyperthreading, etc. there are just to many variables for one person to track and account for in any non-trivial program. You do not however want to abstract away programming itself. I'm not sure how to express what I mean, but one of the many weaknesses I see in some modern languages and coders is lack of awareness the intrinsic differences between human reasoning and computer operation.
@nonobrochacho240 Жыл бұрын
I thoroughly love this channel and am grateful you’re doing it.
@jayjacob9621 Жыл бұрын
I really enjoy how you give the history of each language as well as give a quick overview of how each language works. This series was a great idea, thank you!
@pauldhartley3 жыл бұрын
I attended a meeting of the Forth Interest Group in Palo Alto in the 1970s, one group of Forth programmers explained they had worked on the project to send a rover to Mars. They were supposed to use ADA to program the rover but unbeknown to the 'suits' used Forth. They claimed that the arm on the rover holding the camera was damaged on take-off and because Forth had been used to control the camera could re-program the code to make the rover move instead of the camera arm when panning the camera while the rocked was on its way to Mars. It certainly was a very interesting group of people, a meeting I remember with great interest ever since.
@abc.29243 жыл бұрын
Amazing
@DavesGarage3 жыл бұрын
We need a FORTH impl, actually!
@PR-fk5yb3 жыл бұрын
The most interesting and valuable thing is that FORTH can be implemented on absolutely anything that has a stack and can manipulate it with PUSH, POP and ROT values. I have used it extensively to port different cpus implementations across different test jigs (in ancient times). Unfortunately, I doubt it could win such a sieve race because it is so stack intensive and burns memory like hell. On the other hand it is a langage that does not do any floating point arithmetic (yes no need for that) and is best suited for integer calculations. So for findings primes, it will have a edge there. Really looking forward to the results.
@Kolor-kode3 жыл бұрын
This is a great series, could watch it all day. Thanks Dave
@DavesGarage3 жыл бұрын
You're welcome!
@LonersGuide3 жыл бұрын
Delphi's Object Pascal (when it was a compiled to language) was comparable to in performance to C++. In the case of memory-management-intensive applications, it was a lot faster than Visual C++.
@zobook Жыл бұрын
I use Lazarus at work and is great and fast
@fonkbadonk5370 Жыл бұрын
Delphi / Pascal has such a MUCH worse reputation than it deserves. Fostered mostly by people that only had contact with it during th 90s and early 2000s, and aren't aware that Delphi today is a fully featured, mobile-capable IDE, and can produce very modern and quick executables. On windows espsecially, its ability to remove a LOT of dependencies and result in a monolithic executable makes for a really sleek deployment process. Yes, the executables are 20MB+ even for an empty window. But you also don't have to install literal gigabytes of libraries to be able to simply launch it, and you also don't have to micro-manage their version composition on top. It's just sad that Delphi's current owner is simply terrible at marketing IDEs, and documentation has been neglected a lot in recent years. The IDE and compilers are great though, and up to speed.
@ArchaeanDragon3 жыл бұрын
The comparison of Pascal and Delphi versions is a bit confusing. Pascal (and ObjectPascal) has several dialects implemented in modern day compilers, and some compilers (like FreePascal) handle multiple dialects with compiler switches. Delphi is technically just a modern dialect of Pascal, specifically Object Pascal, with some minor function, keyword, and syntactic sugar differences, but is otherwise functionally equivalent as other Object Pascal dialects. I suppose it's fine for benchmarking its specific compiler optimizations and dialect, and seeing how it differs in performance, but the code isn't largely all that different between them. For example, Inc/Dec procedures exist in the original Turbo Pascal language spec, dating back to the early 80s and are (I believe) a staple of all modern Pascal dialects, not just Delphi. As such, I think the differences between the Object Pascal and Delphi versions showcased here are largely due to programmer preference.
@scottmilano29403 жыл бұрын
The bit manipulation seemed the easiest place to make improvements. A list of bools or even a list of ints seemed to be a lot simpler to check/set than a bit. Memory limitation for bools to 1 million aren’t even close to an issue. Edit: Maybe I'm missing the point and the goal is a common algorithm that can be compared across multiple languages. It's just unusual to see space optimizations in code where storage limitations aren't an issue. I've optimized bits of code now and again, and trading memory for speed is usually the easiest way to optimize, that and -O2.
@somethingsomthing24563 жыл бұрын
unless your working in a low memory system (microcontrollers) then bit set and check manipulation becomes near necessary, but yhea (list/array of bools / ints ) for modern computers it should be pretty quick since it could do the whole computation in a single ALU call
@fvbakel3 жыл бұрын
It matters because a small bit array can fit in the L2 cache of the CPU.
@scottmilano29403 жыл бұрын
@@fvbakel Take a look at the code, cache has little to do with the optimization. I thought he needed to get, or-in, and then set each value. But that's not the case. He's or-ing in 64 values at a time. Basically he takes a prime, 2 for example, creates a 64 bit value 0b10101010 ... and then just or's it in 64 bits at a time.
@rgoodwinau3 жыл бұрын
First language at uni was Pascal. Went on to retarget the Modula-2 compiler (also a Wirth language) to cross compile to the Intel 8086 for my honours year. Later, working at the uni as a DEC-10 sysprog (back in the days when we had source code for the OS), I discovered and fixed a code generation bug in the Pascal compiler. Pascal (with extensions) was a very capable language if you knew what you were doing, even for system programming tasks!
@glych0023 жыл бұрын
So… your title lies to us. It says 45 languages tested, but you didn’t test all 45. This is the sort of thing that pisses viewers off. Call it the “Language speed showdown: ADA vs Pascal”.
@thewaver83 жыл бұрын
IIRC with Delphi, you have "Int64" or you can use an unsigned version of Integer, AKA "LongWord". Also, you can check directly whether a variable is nil. "Assigned" is just a "convenient" way to not have to worry whether that variable holds a function pointer (@myVar nil), or a value (myVar nil).
@dagbruck3 жыл бұрын
But note that Pascal wasn’t object-oriented in any way when it was designed. The comparison in the day was between C and Pascal. Modula-3 was the first OO derivative of Pascal.
@hatcherluke3 жыл бұрын
Another interesting comparison for languages like Python would be using different implementations. For Python, CPython (the standard implementation) vs. pypy (a fast but compatible implementation using a JIT compiler). Edit: Looks like this already exists in the community branch. Great!
@WasiMaster3 жыл бұрын
Jpython, ironpython, brython etc.
@hercion3 жыл бұрын
did you check out NUMBA? with numba, you can jit-compile individual python functions by marking them with @jit and get amazing performance. in the background llvm will do the machine code generation.
@semuta27523 жыл бұрын
@@hercion I’m looking at the documentation now and holy hell that’s such a neat and useful tool. I appreciate you sharing NUMBA’s existence here! Cheers
@wilhelmsarasalo35463 жыл бұрын
Fpc/Lazarus here, I do C, C++, various assembly langues etc. Pascal makes you type more, but a typo is a syntax error instead something you did not intend. Similar end results.
@meylaul50073 жыл бұрын
I must say, seeing the Github for this is an absolute joy! So many different approaches to implementations all with the same purpose and very funny by the way. Is there actually an attempt by someone to implement it in a esoteric language, or don't we do that here? Shakespeare by any chance? :D
@davidfirth13 жыл бұрын
My first job out of college was as a software engineer for.a small company that did embedded systems in Forth and the host software in Turbo Pascal. I actually fondly remember TP 5.5 and 6.x. Extra points if someone still has TP 3.0, which was the first real compiler that I owned. Prior to that, I was punching in hex codes or messing around a little with Z80 assembler.
@VoxyGon3 жыл бұрын
Sweet series! I've got to assume the Pascal working with 32 bit values is giving it the speed advantage over Ada working with 64 bit values (especially since performance is pretty close to 2x). Really interested to see how things evolve at the end of the series!
@fburton83 жыл бұрын
I still use Delphi 7 for work and it's plenty fast enough for the programming I do - real time data acquisition, instrument control, signal processing, graphics and UIs, so I was a bit shocked at how slow Delphi was. Maybe Embarcadero would like to have a go improving the Delphi code... or their compiler! Maybe I should have a go (at the former), although I don't see huge scope for improving the existing code.
@valinhorn423 жыл бұрын
I've been using Delphi XE5 and later 10.4 professionally for the past few years in similar environments. I really like the commodities that Pascal-derived languages bring to the table compared to C. Sure it's a little slower than the latter, but it more than makes up for it in readability. The WYSIWYG GUI editor is also very neat.
@kimbomadsen3 жыл бұрын
@@valinhorn42 I uploaded an update to Git which doubles the performance (at least on my 1950x) using same algorithm, just optimized.
@TheSchwartzIsWithYouToday3 жыл бұрын
He did NOT show the Delphi results here, only what I think was FreePascal. Note that there are three Pascalish compilers on the market: Delphi, FreePascal, and Lazarus -- the latter two of which are FOSS. There's a Community Edition of Delphi that's free, so I'm not sure why it can't be used for this (unless it's due to some silly clause in the license that says you cannot publish benchmark results using it). All three support slightly different versions of Pascal, but it's a pretty safe bet you can compile a Delphi 7 app in the other two. Delphi 10.4.2 ... not likely.
@fburton83 жыл бұрын
@@kimbomadsen Well done, sir!
@valinhorn423 жыл бұрын
@@TheSchwartzIsWithYouToday Fair point. I didn't mean to say that either Delphi or Pascal is slow, just that from experience, the compiler results for the most part aren't as performant as those you get from C compiled with GCC. My main point was that I like using Pascal (the language family) and that the GUI tools which Lazarus and Delphi offer are convenient. As for the Delphi licencing, the Community Edition permits the free distribution of programs up to an annual revenue of USD 5k if I remember correctly.
@garrykraemer89933 жыл бұрын
I can't wait to see more comparisons! AWESOME sound effects during 'execution'! I was a real-time SW engineer on the B-52G/H flight simulator (6 DOF) and F-15 C Flight simulator, F-15 E Weapon System trainer, plus F-15S Aircraft Maintenance Trainer. Languages: Fortran IV/7/95, C, ADA (F-15 Central Computer - 486), JOVIAL (B-52 Avionics), C++, C#, and big symbol dictionaries! A 'cold start' would take days! Over a million lines of code. The B-52 also had very large radar and visual database sets! That was over 30 years ago.
@dale116dot73 жыл бұрын
I do automotive engine management and reboot time is one metric I’m always trying to improve, I look for a reboot and resynchronization on a running engine within 200ms. Probably a quarter million lines in C and just a tiny bit of assembly. It’s interesting to hear all of the different programmers and engineers on here.
@choasisgoated2 жыл бұрын
Yoooo have you have you heard of dcs? I bet some company who makes software for dcs would love to talk to you. Your a legend man.
@renancosta26443 жыл бұрын
That's quiet interesting, looking at the pascal source code we can check lot of things that could be optimized, including the choice of the map, pascal has lots of dictionaries with different goals.
@Axel_Andersen3 жыл бұрын
The video was TLDR and boring for me so I did not watch it all. But from your comment I gather some libraries were involved. In that case all bets are off. A system library is hopefully highly optimised, but has severe constrains to comply with what ever spec it has. An other library maybe targeting a different spec and might utilise for example GPU. Unless the libraries are coded in the host language (as opposed to for example assembly) then this is really not about comparing languages.
@golden.lights.twinkle23292 жыл бұрын
It's the compiler and the cpu it runs on that matters most, not the source language. Turbo-Pascal on the IBM-PC was the fastest language I ever used.
@stilles3423 жыл бұрын
Thank you Dave for reuploading the video. This one works properly in 1080p!
@SidneyCritic3 жыл бұрын
Can't we run 4 languages at a time like Charlotte - lol -, this is going to take ages.
@DavesGarage3 жыл бұрын
Do they still have four wide drag races? I've not seen one in years!
@davidmartensson2733 жыл бұрын
Turbo Pascal also supported virtual methods since the first object oriented version, 5.5.
@willboler8303 жыл бұрын
It's cool to watch you get better at YT over time
@Herdatec3 жыл бұрын
15 Years ago I learned Pascal and Delphi in school. We were sad not to learn a useful language like C++. Well, now I've got a project to program in Ada. Life went full circle.
@theovandaele32203 жыл бұрын
Starting to watch this thinking I know the answer. I'll be honest after viewing it. Edit: OK, I'll have to wait a bit. My guess would be ASM. It may be interesting to note that Delphi supports inline Assembler. So you keep the pretty great OOP framework, but can go a level deeper when you really need the speed. I hope someone tries this (it's been too long for me). PS: did you ever meet Anders after you guys stole him (heheh)?
@FarrellMcGovern3 жыл бұрын
I hope that someone implements this in Forth since I would like to see if the claims that Forth is like a "portable assembler" in terms of speed are true. I used to do some coding in Forth...but that was 40 years ago...and I have forgotten much about the language.
@PablumMcDump3 жыл бұрын
I believe that the only time I've seen Forth in the wild was in the Sun OpenBoot environment.
@FarrellMcGovern3 жыл бұрын
@@PablumMcDump I played around with that on the Sun boxes I have owned. I still have an Ultra 60 that someday I would boot up again. Postscript is a very close cousin to Forth. A bunch of instruments used in Aerospace and Aviation run on Forth. There are lots of embedded real-time control systems that used to run Forth...I don't know about today. I'm totally out of the programming field, doing mostly Unix/Linux sysadmin stuff.
@ce99163 жыл бұрын
It probably wouldn’t fare much better than forth position
@joepike19723 жыл бұрын
@@FarrellMcGovern The XO-1 computers that were part of the give one get one program of the One Laptop per Child had Forth open firmware on them.
@FarrellMcGovern3 жыл бұрын
@@joepike1972 Nice! I didn't know that!
@matthewv7893 жыл бұрын
Pascal was also the main programming language of the original Macintosh, including most of the OS and original applications like MacWrite and MacPaint. I’m not sure if other versions of Pascal support this, but Mac pascal supported pointers as well as “handles” - pointers to pointers - allowing the OS to move chunks of memory around without the application needing to know or care when it happened.
@thomasmeister84763 жыл бұрын
Borland's Turbo Pascal did support that as well - gave me the creeps when I was a kid, trying to learn to code
@alphabetaxenonzzzcat3 жыл бұрын
@@thomasmeister8476 Yeah, I remember using Borland Turbo Pascal for DOS back in the 1990s. It did support pointers - yes.
@dingoosh2 жыл бұрын
Video starts at 9:03 I love your videos, but man, an over nine minute intro isn’t okay
@unsafecast36363 жыл бұрын
About 32-bit integers - they're actually slower than 64-bit ones on a 64-bit machine! So it's not only the range, the performance is affected too
@ce99163 жыл бұрын
I wish you’d explain, this is so counterintuitive!
@nickcarter40063 жыл бұрын
I’m not knowledgeable in any way about this but I assume it’s because the 32-bit integers have to be reinterpreted to 64-bit in an amd64 machine. Can someone confirm?
@unsafecast36363 жыл бұрын
@@ce9916 I think I spoke early here. This depends A LOT on the architecture and use case. For example, if you're bottlenecked by memory bandwidth, just use smaller integers, any benefit you get from arithmetic speed will not matter at that point, just get as many integers through the bus as you can. If you're bottlenecked by the processing speed, that's a whole different story. I'm not very sure about x64, but I know some 64-bit architectures don't have 32-bit arithmetic especially - so they have to convert very often. Also registers, some can't read from fractional registers like x64 does (ax/eax/rax), so again, conversions everywhere. But sometimes it just doesn't matter. Benchmark it and see which is faster.
@ce99163 жыл бұрын
@@unsafecast3636 Thank you! I naively assumed that it would just treat 32b ints as 64b ints and ignored the extra space.
@brdrnda38053 жыл бұрын
How about float vs. double? Can it have performance impact to use float on a 64-bit CPU?
@shizeeque3 жыл бұрын
the moment I saw Rust and Zig on the screen I said to myself: It's a legit channel on my KZbin Subscription list. 👌 Great Job, Dave!
@eldjmasterfreddy43662 ай бұрын
Brings back memories of 90s Turbo Pascal, C , C++, 80x86 and Motorola 68000 Assembly . Great channel
@sang3Eta3 жыл бұрын
Delphi is to Pascal as Visual C++ is to C. Far easier to code and debug in Pascal it's a very underrated language. Much faster than Visual Basic at runtime.
@tommat863 жыл бұрын
I get between 1300-2400 with the pascal bench. Not sure why the numbers are that far apart, but they are much higher than 143. That's on an AMD 2700X
@Ghandacity3 жыл бұрын
I C you're very good with the Pascal puns. Do you have any pointers so I can reference them later?
@Ensue85A3 жыл бұрын
In secondary, I studied Apple II c/e line interpreted BASIC, at DeVry Insitute I then studied i8085A binary HEX, and machine code, followed by ANSI C.
@29Aios3 жыл бұрын
I think OpCodes of different processors should be included too. However ASM is good, but probably it can be optimized with OpCodes, not sure, but hope
@nickryan34173 жыл бұрын
Yep, can certainly see some optimisations for Pascal, Object/Delphi Pascal but even for ADA (although I am definitely not familiar with it enough to really do it justice). My prediction for the fastest will be assembly, but that would require an experienced assembly coder and those are much rarer than other languages. The optimisations that modern compilers, and even the Intel vs generic compilers produce are incredibly sophisticated and this is why it would require an experienced assembly coder to beat them.
@phi1111ip3 жыл бұрын
An excellent idea for a series, the execution is fantastic as well.
@KeinNiemand3 жыл бұрын
I wonder how fast you could make x86 or x86_64 assembly if you really optimised it as much as possible and used even the most obscure instructions when they usefull. While modern c compliers might be faster then doing things by hand they aren't perfect and I wonder how much faster perfect or near perfect assembly that uses every trick to speed things up would be.
@markusmaeder13883 жыл бұрын
What a cool video. Back in the days, I benchmarked every language I could get on my computer. Today performance is more about choosing the right architecture and implement features as fast as possible. If it is too slow, throw more hardware (virtual) at it. The art of tuning performance is neglected and underestimated today. Many programmers tend to not understand all the complexity involved executing their highly abstracted code using thousands of libs. If code doesn't work, pray they find the problem. :)
@portlyoldman3 жыл бұрын
I distinctly recall rewriting batch programs so that they could run overnight in the period between when everyone went home at night then returned in the morning. Delivering the printouts to their desks by 9am.
@johannhuman5323 жыл бұрын
Thanks for talking about (Free)Pascal. Using the "packed" keyword does not put 8 booleans in one byte. For that you need to use "bitpacked" or some compiler directive. But then the compiler won't accept dynamic arrays. I've proposed an implementation using a pointer to bitpacked array. I've tested with actual bit-packed array, it was about the same speed for 1 million, but for 100 million, the bit-packed version was much faster, I guess due to reduced memory cache usage.
@JohnnyWednesday3 жыл бұрын
It's fine - you can enable / disable the bitpacking per unit (possibly round blocks of code too - I've not tried) - I do so for BSP visibility data and bit-plane functions on the Amiga using FPC while still allowing standard array access elsewhere
@johannhuman5323 жыл бұрын
@@JohnnyWednesday I am not sure you got my point. bitpacked was not activated in the implementation and it was with a dynamic array.
@JohnnyWednesday3 жыл бұрын
@@johannhuman532 - oh my apologies - yes, I understand - we should ensure our language is fairly represented.
@johannhuman5323 жыл бұрын
@@JohnnyWednesday no problem, you're forgiven. the keywords are similar
@ultraderek3 жыл бұрын
You should do a in-depth side by side comparison video of each of the 45 languages.
@1992jamo Жыл бұрын
I'd at least love to see a chart with all 45 languages.
@johnny58053 жыл бұрын
10 Print "Please make these videos more interesting for non-programmers"; 20 poke 23606,0 30 goto 10 All I know is Sinclair BASIC :-)
@johncochran84973 жыл бұрын
Try the following program... 10 A=1E18 20 B=1E19 30 C=1E20 40 PRINT A*C 50 PRINT B*B Obviously, the result should be two lines with the value 1E38. But I suspect you'll be surprised at what you actually get.
@unclerojelio63203 жыл бұрын
The first couple of semesters of CS at The University of Texas back in the 80’s used Pascal culminating in a compiler class where used C to write a Pascal compiler. Good times.
@theovandaele32203 жыл бұрын
If I'm not mistaken the Delphi compiler was written in C, but the IDE was written in itself.
@RamLaska3 жыл бұрын
Did you have Nell Dale's class?
@unclerojelio63203 жыл бұрын
@@RamLaska No, but we used her books. Still have them as a matter of fact.
@omnicoinv23 жыл бұрын
@@unclerojelio6320 Id like to inform you that writing a pascal compiler in C is still the basis of the compilers course at UT in 2021. Hook em
@RamLaska3 жыл бұрын
@@unclerojelio6320 Neat! My mom had her class in the early 80. So early that her textbook (which was used for a couple decades or so) was literally just printed out and bound in a HUUUGE 3-ring binder. I think I might still have the binder somewhere, but I removed most of the pages to save space.
@erickvasquezballon64063 жыл бұрын
Answer, ASSEMBLY
@JohnnyWednesday3 жыл бұрын
You have created an absolute storm in the Object Pascal world! Delphi coders and FPC coders are at war over your words ;)
@gorilladisco91083 жыл бұрын
I couldn't care less. I use FPC not because it's better, but because it's affordable. Delphi has gone from $40 during Turbo Pascal time, to $3,000 for current version .. I'm not going to mortgage my house to buy it, is what I'm saying.
@DavesGarage3 жыл бұрын
Cool! I do hope their best and brightest head over to the repo to improve the algorithms before the finale!
@JohnnyWednesday3 жыл бұрын
@@DavesGarage - we're the OG strongly typed, object orientated language - Dart and Rust? are playing on our turf! we'll do you proud Dave!
@ShALLaX3 жыл бұрын
Fantastic! Just what I hoped would happen with all these implementations!
@dolsimon3 жыл бұрын
This is so interesting :D Great project man!
@DavesGarage3 жыл бұрын
Thanks a lot! It'll get more interesting as I can dispense with all the talk up front and spend more time with the code!
@JuanManuelCuchilloRodriguez3 жыл бұрын
In my university, they are still using Pascal to introduce students to programming. Obviously, Ada is a mandatory language for the "Programming languages" course. I loved this episode!
@Grantherum3 жыл бұрын
Pascal is really nice to teach newcomers to programming, as it kind of instills some "best practices" inherently in programming. If you start in something like C, C++... that you can be lazy with the indentions, it takes longer to teach that out of someone, than to just teach it in the first place.
@Mark.Brindle3 жыл бұрын
Pascal is a great and Borland added extensions that became almost standard. I have used UCSD Pascal, Olivetti, Fujitsu, VAX, Turbo Pascal V1.0, 2.0, 3.0 and all Delphi's up to Borlands demise. It has some fantastic features (such as sets) that make reading much easier. The book Data Structures Plus Algorithems = Programs is an awesome book by the author of Pascal.
@JuanManuelCuchilloRodriguez3 жыл бұрын
@@Grantherum I actually discussed much about this topic, and as today I think is the best language to teach programming. It is typed, is readable, allows to pass parameter by copy or as reference, and allows pointers and manually managed memory. I know, memory managed language like C# or Java are less error prone and allows faster development, but I think it is easier going from Pascal to C# than going from C# to Pascal. If you know how to do something the hard-way, the easy way is trivial.
@Sauvenil3 жыл бұрын
Nice, we had Turbo Pascal as an "intro" class as well, in 1996, but didn't have Ada. They offered FORTRAN as well but I didn't really see the point of it except as kind of a history lesson.
@Sauvenil3 жыл бұрын
@@JuanManuelCuchilloRodriguez it's also compiled, so there's the opportunity to learn about the compiler chain too... things you don't learn with the scripted languages of web development.
@HeavyD66003 жыл бұрын
Excellent video, Dave! Thanks!
@DavesGarage3 жыл бұрын
Glad you liked it!
@CalvaTV2 жыл бұрын
The dictionary with prime counts, mentioned at 13:15 is lacking 1->0. A lot of the solutions miss this one, and also miss to produce the correct answer for ”all primes up to the number 1”.
@raatti3 жыл бұрын
Your Pascal part is old (Turbo), Free Pascal is more modern compiler (like Delphi)
@DavesGarage3 жыл бұрын
If you like, see if you can enlist in the project and update it!
@theharbingerofconflation3 жыл бұрын
Can't wait to see a comparison between Swift and C/C++
@vspecky66813 жыл бұрын
This is amazing content. Can't wait for more!
@matt_b...3 жыл бұрын
The sunburn, the shirt... Welcome back from Hawaii?
@____-gy5mq3 жыл бұрын
Or Miami?
@mayank83873 жыл бұрын
Or Vice City?
@fburton83 жыл бұрын
It will be interesting to see how much the benchmark results are improved by contributors. This is a fascinating project.
@EdwinvandenAkker2 жыл бұрын
Ever tried *Xojo* _Native cross-platform_ I worked with it for a few years. And it gets me tools rather quickly.
@killjaqular3 жыл бұрын
Dave: "And if you're in jail, breakout!" Bill Cosby: "Ok." *weird faces accompanied by a laugh track
@lordcheezus13 жыл бұрын
Just discovered this channel, and Dave - You are awesome! Your very well spoken and entertaining while providing very detailed information in a pleasing way. I love watching your videos and aspire to watch more!
@schulmastery3 жыл бұрын
"All you have to do is type make!" * *: As long as you are on a unix system with GNU dev tools installed(for make), and have docker installed and running, with permission to run as a standard privilege user
@voxelfusion98943 жыл бұрын
Isn't that most programmers?
@schulmastery3 жыл бұрын
@@voxelfusion9894 Well programmers write Microsoft documentation, which is phenomenal, but also write Oracle documentation, which is awful by comparison. I don't think terrible/incomplete guidance is inherent to programmers
@omgpullmyfinger3 жыл бұрын
Yep I spent some time getting it to work but consider it time well spent.
@voxelfusion98943 жыл бұрын
@@schulmastery Hm, not sure what the deal with documentation here is, but getting docker set up took me only 3 mins, and the instructions on their github to get all the parts working is excellent. It really is as simple as writing "make", considering how much it does on its own.
@schulmastery3 жыл бұрын
@@voxelfusion9894 And I'm sure setting up the WSL or dual booting a Linux distro would have been trivial for you and all the Windows users out there also. That's not the point. If you know what to do, doing it is easy. For those who don't, downloading the repo, cding into the directory, and typing 'make' would not work. That's all I'm saying.
@cyberwip3 ай бұрын
Assembly language rules! Only thing that beats it is working on the team that designed the machine instructions.
@mnoxman3 жыл бұрын
What no Eiffel?
@warrendemars3 жыл бұрын
Love the outtakes!
@rodhester3 жыл бұрын
Very well put together video. Thank you
@JacobP813 жыл бұрын
0:38 I'd say an Assembly language will be the fastest to run, but since it's so low level very slow to code.
@osgrov3 жыл бұрын
This is really cool. As someone who only really uses C and assembly, it'll be a real treat to learn about all those languages. :)
@MagicNumberArg3 жыл бұрын
Rust. If you do Assembly and C - the best Lang to look at next is Rust.
@Markus_included3 жыл бұрын
To be fair, most languages are pretty similar to C.
@abhinavchavali14433 жыл бұрын
Have you looked into Rust? It's my favorite PL
@osgrov3 жыл бұрын
@@MagicNumberArg not yet, but I've heard lots about it. Maybe now is the time. Will check it out, cheers. :)
@robsku1 Жыл бұрын
@@Markus_included If you want something that's different in very fundamental way, I'd suggest taking a look at Common Lisp - now I'm not a grandmaster of programming language knowledge, in fact I've yet to actually take learning more than very basics of Lisp programming, but I haven't seen anything else that's even close to being as different (disclaimer for asshats: I know I said Common Lisp, but I actually mean Lisp/Lisp-based languages in general, so nobody bring up other implementations than Common Lisp - like elisp or Scheme - to show that I'm wrong. Besides I'm not claiming there isn't anything as different from C). It's a damn interesting language as well - there is a joke about if God was a programmer they would use Lisp. There's another joke about God commenting on programming the universe where he says that he originally planned to do it with Lisp, but ended up hacking it all together with Perl. And despite my love for Perl, if the latter joke was true I feel it would certainly explain a lot ;)
@mikeandersen85353 жыл бұрын
How much does the implementation of a language (compiler/interpreter) impact the results? Anyway, I find this is interesting from other aspects than just raw performance. :)
@FruchteisMitErdbeer3 жыл бұрын
The implementation is literally the only thing that matters here. Anything else is just syntax. The best example is that LuaJIT can outperform C in certain situations. Normally, jit compiled languages are not quite as fast as compiled languages. But with the right implementation (LuaJIT is amazing), that can be outweighed
@mikeandersen85353 жыл бұрын
@@FruchteisMitErdbeer Remember one who once said that "languages are not fast nor slow, it is their implementation that is fast or slow". And I've seen many examples of that up through the years, from Microsofts and Intels Macro Assembler in the late 80s... to different JIT compilers for more "modern" languages. :) I hope Dave comments on this issue in the series he now makes. :)
@plexq3 жыл бұрын
For 90% of use cases, this is the wrong question. Fastest in terms of execution; mostly we don't care. Our CPU consumption is rarely the bottleneck in modern applications, so it's just the wrong question. It'd be better to ask what's the fastest language to develop in? What's the fastest language to maintain applications in. What language will you still love after maintaining an application in it with 5 other people who've changed 5 times for 5 years? That would be an interesting question.
@JohnWasinger3 жыл бұрын
Adept V+ is a language used for industrial robotics. If provides a real-type response and it is an uncompiled script language.
@fonkbadonk5370 Жыл бұрын
Delphi's Pascal dialect has actually been named "Delphi Language" proper by its creators a couple of years ago. So it's entirely fine to use that name for both, the IDE and the language itself.
@NonRoker3 жыл бұрын
If I remember correctly, Integer is whatever the base size is of your cpu. So it would be 32bit on a 32bit cpu but it should be 64 on yours. That is why pascal also has other whole number types for when you really need a specific size and we were warned not to assume how many bits is in a integer.
@DavesGarage3 жыл бұрын
Not until a programmer USES that language to express the algorithm, right?
@NonRoker3 жыл бұрын
@@DavesGarage Might also depend on what compiler was used in that docker. Might go take a look. Really interesting project this. I still use Delphi to this day, even though mostly I work on C# now. But for some quick implementations nothing beats Delphi's speed from concept to hitting the compile button. A future test project might be interesting to compare compile speeds. Like I'm 100% C is going to run faster in this project, but with a big program with lots of headers, I think Pascal based languages will come out on top. Their "header" files (called units) are pre-compiled and I've seen similar sized projects take literal hard seconds to compile in c# but instantly go in delphi.
@socratespassalidis55063 жыл бұрын
@@DavesGarage what do you mean here. you should use the 64bit compiler.Why u used 32 bit and made it look as the language not supports 64bit int wich is not true and misleading. The programmer wisely choose the datatype matching the data it had to handle. I find you biased.
@Trev0r983 жыл бұрын
The more important question is: Which computer language will be the fastest and most efficient, once AI and quantum computing becomes the norm?
@abhinavchavali14433 жыл бұрын
I ran the benchmarks, and for some reason Zig won by a very large margin (3300 passes vs 2102 in C). I have never heard of this language before, or how incredibly optimized it is. There are a lot of other suprises: csharp beats Rust, a bunch of languages beat Assembly and Fortran. Python beat swift, Julia, and Assembly. Did you get similar results Dave?
@robsku1 Жыл бұрын
In almost every case where assembly loses to another language, the reason is that the assembly implementation is not good enough yet - with precompiled languages you could actually run disassembler on the winning executable, clean up the resulting assembly code, including writing meaningful labelnames, etc., then try looking for anything that can be removed or done better. Like the compiler propably pushes function parameters to stack before calling, but on some instances it might make more sense to just pass them in registers instead. You'll end up at very least with same performance, because the disassembled code is literally a symbolic presentation of the machine code of the winning program executable. But there's couple of things to consider. 1st, x86 assembly can mean a lot of things. We're probably not talking about 16-bit real-mode x86 assembly. And if we were talking about 32-bit x86 assembly, we most likely wouldn't want to limit ourselves to the instruction set of a 386 CPU. But as we're likely talking about 64-bit, are we going to lose simply because we're making sure the code will run on any 64-bit x86 CPU? I for example would implement C benchmarking in two different ways - one that just defines the basic CPU architecture (IA64/AMD64), and same code but with configuration done "the gentoo way", where the configuration script would check the machines CPU features and create a GCC_FLAGS list that enables all the instruction set extensions of your specific CPU. Then even if you wrote the winning code in assembly, you might lose to C on another CPU. Unless someone went all Japanese on creating a single assembly implementation that implemented different solutions for different instruction sets available today that were all optimized to perfection and make it choose at runtime which code was the best that could be ran on the current CPU. Even then you might loose your 1st place just because of newer CPU's were made, LOL. Even JIT-compiler might end up beating an assembly solution if the JIT is written to choose what CPU instructions can be used at runtime. This whole rant is to make a simple point: The fact is that nothing can outperform assembly - as long as it's optimized for same CPU. When you have a specified "minimum requirements" you need the software to run "fast enough" on, that's when you have good case for using assembly to optimize performance critical parts. If that software also happens to never need to or benefit from running faster than X, that's perfect! Many computer games fit this, they run fast enough on "recommended hardware" and optimization is done to push that hardware, as well as "minimum requirements" as low as possible. But a lot of software is the kind that can always benefit from increased performance. If that software also happens to be open source (or proprietary software that is provided as source that the customer can compile to their custom hardware), then the software can utilize compiler optimizations on different hardware without effort required from the author of the software. Code written in assembly however will only become faster when ran on faster hardware, someone has to make the effort of rewriting it if they want it to be able to benefit from newer CPU's new instructions. Most of the time optimizing by programming in assembly isn't practical. But when you have to push a specific architecture beyond it's limits (internet dummies, don't take this literally), there's no language that can outperform it. In theory. In practise it comes down to your skills.
@ray_glaze3 жыл бұрын
I didn't have time to read all 857 comments, so this may be a repeat. Embarcadero has a free Community Edition that could be used for a fairer comparison. Turbo Pascal is a poor proxy.
@AndreiNeacsu3 жыл бұрын
I would be surprised if properly written Fortran does not get a top spot. I would expect it to be the fastest in this class of calculations.
@falklumo3 жыл бұрын
For sure. Only problem is that the Github repo doesn't include a decent optimizing Fortran compiler, just gfortran. E.g., Intel Fortran compiler typically creates code running twice as fast, sometimes 30x!
@AndreiNeacsu3 жыл бұрын
@@falklumo It's all about the proper vectorization for the architecture; arranging variables and data to fit onto 128, 256, or 512bits and making sure that the cache is optimized for. On the XeonPhi (both on Knights Corner and Knights Landing) I measured a 10x increase in single-threaded speed when taking into account the specifics of the architecture (SSE, AVX, FMA, etc.).
@Noodles.FreeUkraine3 жыл бұрын
And the Delphi result is where exactly?!?
@deadsource3 жыл бұрын
I think he said he doesn't have a Delphi license
@BartekJuszczak3 жыл бұрын
He basically said if it's paid and closed source then all you get is a "This language is just like pascal but you have to pay for it "
@Trashloot3 жыл бұрын
Wup wup much love for Delphi/Lazarus :3.
@LonersGuide3 жыл бұрын
Is Lazarus still alive? I used to be a serious Delphi guy, but gave it up long ago.
@Trashloot3 жыл бұрын
@@LonersGuide I am using it and you can still download it. Im not a professional programmer tho so i don't know if anybody uses it for serious work. But i don't know anything that's better at quickly creating desktop applications. So its alive from my point of view :D.
@Pozi_Drive3 жыл бұрын
Apparently you never understood the Niklaus Wirth joke. Europeans call him by name (Neeklous Weert), whereas the americans call him by value (nickles worth). Wirth had a complete Windows 8-like OS on his workstations running, around 1990. But he was from crazy switzerland so all the US joked about him.
@guyincognito19853 жыл бұрын
I come for the drag racing, but I stay for the outtakes.
@robsku1 Жыл бұрын
Man, that Turbo Pascal screenshot brings back strong memories from my early years at programming =)
@alphabasic17592 жыл бұрын
Fun to se someone mention Delphi and Turbo Pascal again. Reminds me of my early career.
@the_beefy19863 жыл бұрын
Not trying to split hairs here, but Python is not an interpreted language in the sense that BASIC is interpreted. CPython, the reference implementation of the lanaguage, compiles your code to and then executes bytecode, which puts it into the same category with Java and C#. There are other implementations of the language, such as PyPy, which adds cool features like JIT.
@gronki13 жыл бұрын
Dave: I don't have a Fortran compiler ready on my machine me, using Fortran regularly: no?
@juanma95113 жыл бұрын
Great stuff dave !!
@sanchezramirez42803 жыл бұрын
Huge knowledge, and experience. I am amazed. Due to your influence, I will back to c++ which I lerned in 1999-2003 and start lerning another language. C#, Kotlin/Java or Python I think. It becomes very interestic for me. Maybe I will change my job as computer graphic artist to programming/coding.
@9rune53 жыл бұрын
Isn't Anders Hejlsberg mostly busy with TypeScript these days?
@bharold3 жыл бұрын
Yes, I believe so. I might be outdated, but I believe the baton on C# was passed to Mads Torgersen and Anders went on to lead TypeScript.
@Mark.Brindle3 жыл бұрын
@@bharold As far as I know, you are correct. Anders actually said this is a presentation about 2 years ago.
@ce99163 жыл бұрын
Is having a dutch last name a requirements to creating or maintaining languages?
@bharold3 жыл бұрын
@@ce9916 Hejlsberg is a Dane. I don't know where Torgersen is from, but his last name is also Scandinavian.
@9rune53 жыл бұрын
@@ce9916 Both Anders and Mads are Danish. As for Niklas, he is Swiss. So the answer to your question is 'no'.
@smidi47113 жыл бұрын
Great video 👌
@scottk32923 ай бұрын
I wonder if any Modula-2 implementation still exists. I bought Modula-2-Sprint for my Amiga system back in college. Also, what about Kotlin? Would that be applicable here? Lastly, I'm looking forward to the release of Mojo Python, to see how it really compares. They claim to have done some cool compiler tricks (with slight language modifications) that they say makes Mojo competitive with C++.