Slashdot Mirror


Ask Slashdot: What Should Be the Attributes of an Ideal Programming Language If Computers Were Infinitely Fast?

An anonymous reader writes: Earlier today, Tim Sweeney, the founder of Epic Games, asked his Twitter followers an interesting question: "What are the attributes of an ideal programming language if computers were infinitely fast, and we designed for coding productivity only?" I could think of several things, the chief of which would be getting rid of the garbage collection. I was wondering what other things you folks would suggest?

326 comments

  1. I reject the question by SuperKendall · · Score: 4, Insightful

    This is stupid. Computer will never be "infinitely fast" or even close to it. There is always the possibility of ding computation in such a way as to drag down any system.

    There is always a compromise between programmer productivity, code maintainability, and system performance. It's not like you can realistically escape this triad so why pretend one leg does not exist? The computer programming industry has enough problems with magical thinking as it is.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:I reject the question by Topwiz · · Score: 5, Insightful

      Also stupid is getting rid of garbage collection. If it happens automatically at infinite speed, removing it would have no effect on your coding productivity.

    2. Re:I reject the question by Anonymous Coward · · Score: 0

      If computers were infinitely fast, things like garbage collection would be infinitely fast.

    3. Re:I reject the question by Rick+Schumann · · Score: 0

      This is stupid

      I second the motion. If they were 'infinitely fast' it wouldn't matter; you could write everything in interpreted BASIC and it wouldn't matter. This 'question' sounds like an 8 year old is asking it.

    4. Re:I reject the question by ender8282 · · Score: 1

      The poster could be stupid or they could be trolling...

    5. Re:I reject the question by avandesande · · Score: 1

      I really don't understand at all what programming languages have to do with computer speed. Anything that makes databases queries faster works for me.....

      --
      love is just extroverted narcissism
    6. Re:I reject the question by TWX · · Score: 1

      What's funny is that you provided a meaningful answer to a question that you had already identified as stupid.

      To actually answer the question, a language like COBOL that uses pseudo-natural-language would probably be king, as it would be the least like programming, and also assuming an infinitely fast computer, it would be capable of handling proper voice recognition. Interfacing with the computer and programming it would be more like the fictional LCARS on Star Trek: The Next Generation, where one simply speaks to the computer and gets meaninful audible responses or beautifully formatted visual feedback.

      Things that would be mostly deprecated out of programming would be extended formatting characters, library includes (why load separate libraries when the system is able to have all of them available?), and other sort of housekeeping functions. The system would do those automatically, there would be no reason to manually invoke them.

      --
      Do not look into laser with remaining eye.
    7. Re:I reject the question by drew_kime · · Score: 3, Insightful

      There is always a compromise between programmer productivity, code maintainability, and system performance.

      But if you didn't have to worry about the performance, what would boost the other two?

      This is how great advances are made. Design for the world you wish you had, then figure out how to make it real.

      --
      Nope, no sig
    8. Re:I reject the question by Anonymous Coward · · Score: 0

      Computers are infinitely fast and coding productivity is the only problem left. In actual reality there are minor deviations from what I just wrote, but for most intents and purposes, that's it. Everybody is looking for dowhatimean(arguments), because developers are so damn expensive compared to just throwing more hardware at the problem. The suits desperately want ordinary people with an attention span of house flies to be able to code.

    9. Re:I reject the question by Anonymous Coward · · Score: 0

      Quantum computing is very fast and with cloud computing, this would be possible.

    10. Re:I reject the question by soft_guy · · Score: 4, Funny

      If the computer is infinitely fast, maybe it also has infinite memory so instead of garbage collection you could just leak everything.

      --
      Avoid Missing Ball for High Score
    11. Re:I reject the question by Anonymous Coward · · Score: 0

      Exactly, since infinite speed but not unlimited memory was proposed you'd do more garbage collection not less.

    12. Re:I reject the question by Anonymous Coward · · Score: 0

      Getting rid of garbage collection is stupid but your reason is wrong. Removing garbage collection would force you to type free() statements and have an effect on your coding productivity. The correct reason is because the premise was "infinitely fast", not "infinite RAM".

    13. Re:I reject the question by dennis612b · · Score: 1

      I also reject the question. Not only is it a tacit validation of bad programming practices it steps away from understanding the problems well enough to come up with an elegant solution.

    14. Re:I reject the question by wagnerrp · · Score: 1

      Quantum cloud computing? You can't actually tell if the service is running, but at least you no longer have to reboot it yourself...

    15. Re:I reject the question by SuperKendall · · Score: 1

      Computers are infinitely fast and coding productivity is the only problem left

      Tell that to people coding for a few billion mobile devices...

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
    16. Re:I reject the question by Pseudonym · · Score: 1

      Here's an example then. If speed wasn't an issue, every data structure could be a database.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    17. Re:I reject the question by ShanghaiBill · · Score: 5, Funny

      Also stupid is getting rid of garbage collection.

      Even having a "programming language" would be stupid. An infinitely fast computer could just run a NN that was infinitely wide and infinitely deep and it would already know exactly what you want before you even ask for it.

    18. Re:I reject the question by DickBreath · · Score: 1

      > If [GC] happens automatically at infinite speed, removing it would have no effect on your coding productivity.

      Having GC improves productivity. You no longer need to free anything you allocate. It does not mean you have infinite memory. Just that the system will deallocate things for you.

      Improving productivity was one of the requirements of the problem statement.

      --

      I'll see your senator, and I'll raise you two judges.
    19. Re:I reject the question by DickBreath · · Score: 2

      Writing everything in BASIC does not achieve the desired outcome. The problem stated design for human productivity only (or coding productivity it said). While I was very fond of interpreted BASIC four decades ago (yes, I really was!), it is simply too low level a language. I would not try to use BASIC to write, say, a Sudoku solver. Or Rubik's Cube solver. Or a compiler. Or a modern large web application.

      I think the reason the problem stated infinite speed was so that everyone would focus on human productivity and not squibble about performance issues like static typing vs dynamic typing. Or compiled / interpreted. Etc.

      --

      I'll see your senator, and I'll raise you two judges.
    20. Re:I reject the question by DickBreath · · Score: 2

      The question is not stupid. It is to get one to think about what makes a human programmer more productive and not to focus on the computer execution speed. The way I read it is that even if a language was interpreted on a mechanical system powered by rodents running on spinning wheels; what attributes of a great programming language would make humans more productive at programming if execution speed were not a factor for consideration? If somehow your programming language would be fast and you didn't care how, then what would you want in a language to make your life more productive?

      --

      I'll see your senator, and I'll raise you two judges.
    21. Re:I reject the question by DickBreath · · Score: 1

      If speed wasn't an issue, how would you design your query language to make YOU more productive?

      --

      I'll see your senator, and I'll raise you two judges.
    22. Re:I reject the question by Kjella · · Score: 1

      But if you didn't have to worry about the performance, what would boost the other two? This is how great advances are made. Design for the world you wish you had, then figure out how to make it real.

      Actually it's more like create a magic fantasy land and create solutions that don't work anywhere else. Or how space ships would look like if we had warp cores, if you prefer the sci-fi version. The first thing I'd get rid of is threads, who needs it if you have infinite single thread performance? Shaders? Dedicated hardware? You'd make games without all the tricks just ray trace everything. Databases with zero indexing and roll-ups, because you can do an infinite number of table scans and aggregations instantly. You could forget everything about Big-O notation, sort algorithms, caching, pipelining, NUMA, compiler optimizations and all that and finally operate on the ivory tower idealized computer. Except in the real world games would run at 0.01 FPS.

      --
      Live today, because you never know what tomorrow brings
    23. Re:I reject the question by Rick+Schumann · · Score: 1

      What's funny is that you provided a meaningful answer to a question that you had already identified as stupid.

      Gee, I guess I should have used the </sarcasm> tag on it so people with no sense of humor would know I was kidding.

    24. Re:I reject the question by Anonymous Coward · · Score: 0

      This is stupid.

      You're totally correct, engaging in absurd hypotheticals never assisted creativity.

    25. Re:I reject the question by Anonymous Coward · · Score: 0

      For Pete's sake. It's a just hypothetical question designed to focus attention on what sort of language would make programmers more productive.

      And garbage collection is the precisely the sort of stuff you would include in such a situation because it saves you time and effort and reduces memory leaks. The post is a troll.

    26. Re:I reject the question by Chris+Mattern · · Score: 1

      The point is, that wasn't specified, but infinite speed was. So sacrificing memory to gain speed makes no sense.

    27. Re:I reject the question by lgw · · Score: 1

      There are other, better ways to have the system deallocate things for you. GC is non-deterministic, which isn't great even if your system doesn't mysteriously pause every so often.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    28. Re:I reject the question by mikael · · Score: 1

      When there are hardware systems consisting of dozens to thousands of cores (GPU's) running at GigaHertz speeds with hundreds of instructions being in-flight on each core , then "infinitely fast" is the best definition. Compare the speed of an octo-core 4Ghz gaming rig with SLI GPU's and AVX instruction sets, against a 20MHz Desktop PC with an 80387 maths coprocessor. The Mandelbrot set can be rendered in real-time on the first system at HD resolutions.

      For scientific programming, a programming language would have to support full mathematical library support, support low-level programming options (pointers, inter-process communication), make parallel processing transparent (creation of threads, synchronisation, scatter/gather), support object orientated programming. The closest match for those needs is C++ with the parallel processing API's like OpenMP. Other solutions are Matlab with C/C++ code generation or Python wrapped around CUDA, or other API's.

      With OpenGL compute shaders, you can actually dynamically create the shader source code within your application, have the GPU driver compile it, then run it on all cores, then read back the results.

      --
      Vintage computer adverts: http://www.vintageadbrowser.com/computers-and-software-ads
    29. Re:I reject the question by mikael · · Score: 2

      As programming languages become increasingly high level (assembler -> C -> C++ -> Java -> Python), the amount of generic boilerplate to handle module linking, object-orientated constructs also increases. At the far end, you have your SQL database and client which wrap an entire 4GL around a network protocol to implement and optimize complex search requests. Some programming languages can abstract away the need to understand advanced parallel processing techniques in order to take advantage of modern CPU designs.

      With assembler, you only deal with individual instructions and data structures that relate to the actual problem needing to be solved. C introduces a standard way of passing data in function calls and returning results using a stack. Some CPU's support instructions to save the entire register set onto a stack. Others support multiple banks of registers. There there is DLL or shared object loading which performs dynamic linking. C++ introduces class objects has a table of function pointers to support inheritance, pure virtual classes, derived classes, polymorphism and all other object-oriented programming theory. A complex multi-inheritance class object will be sliced up and recombined to generate a derived class from the base classes.

      All of this involves a substantial overhead, which for early low clock speed CPU's that weren't superscalar or support out-of-order code execution, made applications extremely sluggish. Now you have multi-core systems where a couple of CPU cores are used for OS background tasks, while one is used for the GUI and another for user application.

      --
      Vintage computer adverts: http://www.vintageadbrowser.com/computers-and-software-ads
    30. Re:I reject the question by mikael · · Score: 1

      If you kept checking to see if the server was running, it wouldn't change state.

      --
      Vintage computer adverts: http://www.vintageadbrowser.com/computers-and-software-ads
    31. Re:I reject the question by Anonymous Coward · · Score: 0

      >Computing will never be infinitely fast

      I disagree. It is entirely possible that a new computing paradigm will be invented at some point in the future, perhaps based on something like a closed timelike curve that creates a branch universe where time goes perpendicular to time in our universe, allowing the instantaneous output of a result.

      Indeed, I wonder if that isn't exactly what the observed universe is.

    32. Re: I reject the question by Anonymous Coward · · Score: 1

      It's not stupid at all. The answer is English and other human spoken languages.
      If computers were infinitely fast we should be able to tell them what to do.

    33. Re: I reject the question by Anonymous Coward · · Score: 0

      You fail.

      Comp sci is filled with thought experiments that are infinitely fast, infinitely big and have all the time of the universe.

      It is the upper limit of decidability. if you have a computer that is infinitely fast you have a computer that is still bound by the same laws of computation as computers of finite speed.

    34. Re: I reject the question by Anonymous Coward · · Score: 0

      My reply has attached itself to a random comment...intended for the 'this is stupid' crowd ( which includes me)

    35. Re:I reject the question by ewibble · · Score: 2

      Dynamic typing vs static typing is a productivity thing for me, not speed thing, I prefer to catch my errors sooner rather than later.

      That being said if computers where infinitely fast I would have them run my program with all possible inputs and see if they crashed, got type errors. So I wouldn't mind type errors as much.

    36. Re:I reject the question by putaro · · Score: 2

      It only pauses because it takes CPU cycles to do the garbage collection - this machine is infinitely fast so GC would be instantaneous.

    37. Re: I reject the question by Anonymous Coward · · Score: 0

      Infinite speed not infinite RAM. You don't get to keep infinity neural weights.

    38. Re: I reject the question by Anonymous Coward · · Score: 0

      of course you do as you can store them out of memory as the machine is infinitely fast so it obviously won't have any problem recalling them instantly from tape storage.

    39. Re:I reject the question by OrangeTide · · Score: 1

      BASIC is not a great language if you want to extend. GW-BASIC / QBasic / Visual Basic have various improvements that add better functions and data types, but even so it's still has problems. If BASIC and C programs were always exactly the same performance, there would still be reasons to use C over BASIC.

      --
      “Common sense is not so common.” — Voltaire
    40. Re:I reject the question by Place+a+name+here · · Score: 2

      If the computer was infinitely fast, there would be two programming languages.

      1. Nonlinear optimization.
      2. Teach-by-example, e.g. a neural net of maximum size for the RAM constraints, where all the weights are found by brute force.

      The former is for when you know exactly what you want, the latter is for when you don't and use supervised learning instead.
      For that matter, an infinitely fast computer is a hypercomputer, so 2. could easily be "the smallest Turing machine that produces the desired outputs given the inputs".

    41. Re:I reject the question by Anonymous Coward · · Score: 1

      GC for performance reasons doesn't even make sense on a computer with limited speed.
      You want resource usage and performance to be as deterministic as possible.

      GC makes things more resource heavy, makes the resource freeing much more complicated.
      The only thing you get from it is that it removes the task from the programmer. You trade CPU and memory usage for convenience.
      If you are lucky the GC won't interfere during anything important and you may have gained some performance where you wanted it, but there will be cases where it steps in anyway and it is a lot trickier to track down.

      Och and you also don't get that much convenience since you still have to think about what resources references other resources so that you don't create dead loops that the GC won't free.

    42. Re:I reject the question by Anonymous Coward · · Score: 0

      You're running at infinite YHz though so the pauses will be 0 ys.

    43. Re:I reject the question by TheRaven64 · · Score: 2

      You seem to be conflating a stop-the-world tracing collector (a mechanism) with automatic garbage collection (a policy). Garbage collection is not non-deterministic because garbage collection specifies the objective (memory is automatically reclaimed), not the implementation. There are a number of GC designs that work on realtime systems, with guaranteed maximum pause times (look at some of David F. Bacon's work, for example). Garbage collection doesn't require mysterious pauses. There are a number of concurrent collector designs, which don't stop execution of the main program (Azul ships a very high-performance one for Java, for example).

      Any garbage collector implementation is in a tradeoff space between allocation throughput, tail latency, worst-case memory overhead, and overall CPU load. It's possible to heavily optimise for any of these, but not all of them at the same time. A lot of the problems people associate with garbage collection are due to picking an implementation that optimises for the ones that are not important for their workload.

      --
      I am TheRaven on Soylent News
    44. Re: I reject the question by aglider · · Score: 1

      Agreed

      --
      Sent as ripples into the electromagnetic field. No single photon has been harmed in the process.
    45. Re:I reject the question by Joce640k · · Score: 2

      +1

      GC creates more problems than it solves.

      The knowledge/discipline needed to use GC properly isn't less than learning to use reference counting.

      Worse: In a GC language you'll be retyping the exact same boiler plate code over and over gain to workaround the problem. This leads to copy/paste errors, code verbosity that hides other bugs, forgetting to do it, etc.

      --
      No sig today...
    46. Re:I reject the question by Joce640k · · Score: 1

      If it's infinitely fast then you don't need a programming language at all.

      Just define some input/output conditions and let the computer fill the memory with random garbage until the conditions are met.

      --
      No sig today...
    47. Re:I reject the question by synaptik · · Score: 1

      "Computer, make a badass game for me to play."

      --
      HSJ$$*&#^!#+++ATH0
      NO CARRIER
    48. Re:I reject the question by DickBreath · · Score: 1

      I would be happy for you to educate me about these better ways. I have used GC for decades. I have given the GC problem a lot of thought -- but have never formally implemented anything.

      The first obvious different approach is reference counting. Every time a new pointer is created to the same object, the object's reference count is incremented. Every time a pointer no longer points to an object, the object's reference counter is decremented. If the reference counter reached zero (no references), then you deallocate the object -- which also means that any pointers it contains no longer point to other objects, thus decrementing their reference counters, and so on. It sounds good. But wait! What if you end up with a cyclic reference? A points to B. B points to C. C points to A. Even if the last pointer to A is removed, A's reference count is one because of C. C's reference count is one because of B. B's reference count is one because of A. Only a GC can solve this.

      Mabye you've read an old Vulcan saying that any sufficiently complex program ends up re-implementing a poorly specified, bug ridden Lisp inside of it.

      In an immensely complex program with immensely complex data structures, I could come up with a memory management discipline in, say, C++. But why? I could write my entire program in assembly language too. But the whole point of using higher and higher level abstractions is to increase human productivity. And the whole point of this slashdot topic is about what would a language have if the overriding goal was to make human programmers more productive -- disregarding execution performance. Why is it okay to disregard compute resources? Answer: because they are cheap and now scalable. Just throw another hundred gigabytes of RAM at it and call it a day.

      Modern GC systems are concurrent and parallel. They run concurrently with the workload. And the GC can run on multiple CPU cores. Just throw another dozen cpu cores at it. Problem cheaply solved -- compared to programmer time and cost. Obviously, I'm talking about software and hardware that is not for "my little pony" type applications.

      --

      I'll see your senator, and I'll raise you two judges.
    49. Re:I reject the question by Anonymous Coward · · Score: 0

      If the computer is infinitely fast, maybe it also has infinite memory ...

      You don't need both.

    50. Re:I reject the question by DickBreath · · Score: 1

      I like both dynamic and static typing. I also like some strong typing systems that seem like dynamic typing.

      In a small program, you can't beat dynamic typing.

      If you build a very large program, you quickly learn to appreciate static typing. Especially as the program ages over the years. A large dynamically typed program becomes very brittle with age. Anything you change you have to worry about how and whether it will break something. Are you really sure your tests cover every possible execution path in a very large program? With static typing, if you break something the compiler spots it instantly and you see files start turning red in your editor. Or rather, in the project pane where the file tree lives.

      --

      I'll see your senator, and I'll raise you two judges.
    51. Re: I reject the question by Cederic · · Score: 1

      Tape storage is not infinitely fast.

      However, why store them? Just recalculate them on the fly.

    52. Re:I reject the question by Anonymous Coward · · Score: 0

      A language that comes with spellcheck?

    53. Re:I reject the question by peawormsworth · · Score: 1

      Computer will never be "infinitely fast" or even close to it.

      There is no "close" to infinity. And "infinitely fast" is an undefined statement.

      There is no response to undefined questions. Anyone who responds to questions that they do not understand is **insult goes here**

    54. Re:I reject the question by peawormsworth · · Score: 1

      Why even bother with inputs? If the output is in a different location than the input and appears infinitely fast, then the output was not caused by the input. Just look for outputs to your infinity computer and get the results without programming or inputing anything.

      I'm sure I have it wrong. But no one has defined "infinitely fast"... so there are no correct answers to this silly idea. And speaking about garbage collection when you have an infinity object is infantile.

    55. Re:I reject the question by Anonymous Coward · · Score: 0

      I suspect that if computers were infinitely fast, we would discover just how terrible most code is. Concurrency issues would suddenly stop being random events that happen once in a blue moon, and be guaranteed to happen, causing the answer to every problem to come out as 42 every time. The mice will be happy that we finally served our purpose though.

    56. Re:I reject the question by godefroi · · Score: 1

      Pedantic, maybe, but GC is not necessarily non-deterministic. The GC in some particular platform may be, but that's not a defining characteristic of GC.

      --
      Karma: Poor (Mostly affected by lame karma-joke sigs)
    57. Re:I reject the question by Anonymous Coward · · Score: 0

      A computer with infinite speed would have infinitesimal memory.

    58. Re: I reject the question by Anonymous Coward · · Score: 0

      i saw a corndog go by on a fishing hook,now whats that corndog doing wayyy down here?

  2. Declarative Constraint by Anonymous Coward · · Score: 0

    Tell the computer what you want and it will compute it in zero time.

    1. Re:Declarative Constraint by Imrik · · Score: 1

      Don't tell the computer what you want and it will still compute it in zero time.

    2. Re: Declarative Constraint by Anonymous Coward · · Score: 0

      Exactly, voice instant programming. It would learn all data formats API etc.. in an instant. So just tell it what you want.

  3. Stupid thought experiment is stupid. by Anonymous Coward · · Score: 1

    If computers were infinitely fast, there wouldn't be any reason to change any programming languages since infinitely fast means you can do whatever you want and not have to worry about it.

    1. Re:Stupid thought experiment is stupid. by Anonymous Coward · · Score: 2, Insightful

      You still have to write the correct logic. So the question is essentially, "what features of a programming language lead to least logical errors?"

    2. Re:Stupid thought experiment is stupid. by Dunbal · · Score: 1

      Blaming the language for the shortfalls of the programmer. PEBKAC

      --
      Seven puppies were harmed during the making of this post.
    3. Re: Stupid thought experiment is stupid. by Anonymous Coward · · Score: 0

      Depends on the language. I would be impressed to see someone write a frontend in sql.

    4. Re:Stupid thought experiment is stupid. by Zeroko · · Score: 2

      There very much would be a reason to change programming languages. With infinite speed, you could do an exhaustive search for proofs of correctness, so you could write the requirements for the program & have the language formally verify it without any extra effort (provided a proof of correctness exists at all).

      For that matter, why not just write test cases & constraints & have it find the simplest program that passes all of them? At some point, you would either have enough constraints that the simplest program is correct, or you would realize you did not actually know what you wanted.

    5. Re:Stupid thought experiment is stupid. by ShanghaiBill · · Score: 1

      You still have to write the correct logic.

      No you don't. An infinitely fast computer can instantly try all possible permutations of logic, and output the simplest program that meets the spec.

    6. Re:Stupid thought experiment is stupid. by DickBreath · · Score: 1

      An infinitely fast computer doesn't make programmers infinitely fast. The question was about making human programmers more productive without focusing on the execution speed. What would your ideal language have to make YOU more productive if execution speed was not something to worry about?

      --

      I'll see your senator, and I'll raise you two judges.
    7. Re:Stupid thought experiment is stupid. by erice · · Score: 1

      You still have to write the correct logic.

      No you don't. An infinitely fast computer can instantly try all possible permutations of logic, and output the simplest program that meets the spec.

      That assumes a machine readable spec. That just moves the goal to writing and debugging that spec. Because specs often have errors, especially when they are machine readable. They are, after all, just higher level programming languages. High level languages like we use today were once described as executable specs.

      So, we are still left the question of what this specification language will look like such it is expressive enough to define the problem, yet minimize the errors.

      I don't know what this language will look like but I can say a few things:

      1) It will not be natural language. Natural language is ambiguous. While the problem definition says the computer is infinitely fast, it does not way we have powerful AI that understands the context of the problem and knows how to ask questions when things are unclear.
      2) The language will not have implementation shortcuts embedded in it. No requirement to define a variable in read order before use, for instance. If the "compiler" has to read the all the files a 1000 times to make sense of the program, that is what it will do.
      3) It will not actually compile. Compilers make programs faster but making life more difficult for the programmer. There is no sense in that if the computer is infinitely fast. The language will be interpreted from the original input source every time.
      4) It will always run with extensive debugging facilities turned on.
      5) It will compress everything. Why? Because when execution time is not a factor, the next limit is storage

    8. Re: Stupid thought experiment is stupid. by Dunbal · · Score: 1

      SQL is not a programming language. It's a database SEARCH AND QUERY language. It works for doing stuff with and to your data and databases. I would be equally impressed to see someone write a computer program with a clarinet by playing musical notes - music is a language too after all, but that's sort of off the topic.

      --
      Seven puppies were harmed during the making of this post.
    9. Re:Stupid thought experiment is stupid. by Anonymous Coward · · Score: 0

      What would you need that program for? You can already solve every problem by just stating it and trying out all possible inputs, even if there are infinitely many. We would even get rid of the halting problem. Some variables might end up undefined or DOES_NOT_CONVERGE after that infinite loop though.

    10. Re:Stupid thought experiment is stupid. by Anonymous Coward · · Score: 0

      Right... Problem Exists Between Keyboard And Computer. It's not doing what I told it to.

  4. Presumably... by sycodon · · Score: 4, Funny

    ...and infinitely fast computer would be self aware and wouldn't need instructions.

    --
    When Fascism comes to America, it will call itself Anti-Fascism, and tell you to give up your guns.
    1. Re:Presumably... by Anonymous Coward · · Score: 0

      Infinitely fast != Intelligent

    2. Re:Presumably... by OzPeter · · Score: 2

      ...and infinitely fast computer would be self aware and wouldn't need instructions.

      Yeah but you have to watch out for the pain in all the diodes down its left side

      --
      I am Slashdot. Are you Slashdot as well?
    3. Re:Presumably... by skids · · Score: 1

      "Infinitely fast" could run brute force solution space searches on anything... no need for genetic algorithms, neural nets, or contortions to fit quantum models. That would make AI pretty easy to develop by comparison to what we have now.

      Of course it might be hard to teach such a platform the concept of time, but as Thunderclese said: Time is an abstract concept invented by carbon based life forms to monitor their ongoing decay.

    4. Re:Presumably... by tietokone-olmi · · Score: 1

      What's more, it would already have computed everything. All we'd need to do is specify what answer we're looking for. Lookup also occurs immediately, implying that the computer knows ahead of time what we're looking for.

      All violations of basic consequentiality, I might point out.

    5. Re:Presumably... by Anonymous Coward · · Score: 0

      Exactly. So one would only need dumb, brute-force algorithms. No need for hash tables, for example. No need for most data structures. Possibly no need for associative arrays, as the keys could be stored in the data, and whatever's blindly looping through the collection uses that.

      Also, no need for parallel algorithms, and indeed, no need for threading of any sort. Everything would be straight line, single thread.

      No need for interrupts, as polling would be sufficient.

    6. Re:Presumably... by mpeskett · · Score: 1

      I'm not sure that follows - self-awareness would require the computer to be running software that produces self-awareness. You can't just wire together an absurd amount of processing power and expect it to "wake up" of its own accord. Without the right algorithm to run it would still just be an inert lump of silicon.

      Equally you could have the infinitely fast computer run some other program... if it were devoted to calculating digits of pi then it would hypothetically be able to calculate all infinitely-many of them in a finite period of time (because "infinitely fast" is a logical absurdity) but it still wouldn't ever need to contemplate its own existence in the process.

  5. It already exists, and it is... by Anonymous Coward · · Score: 0

    ...

    LISP

  6. Line numbers by aicrules · · Score: 3, Funny

    And GOTO, no GOSUB though, that's dumb

    1. Re:Line numbers by djinn6 · · Score: 1

      Nah, we need COMEFROM.

    2. Re: Line numbers by Anonymous Coward · · Score: 0

      Yu can't have a GOTO. That would instantly create a black hole!

    3. Re: Line numbers by Anonymous Coward · · Score: 0

      And GO AWAY

      Excellent post

  7. So painfully obvious by American+AC+in+Paris · · Score: 4, Funny

    The language for an infinitely fast computer is called DUH.

    There are no keywords, operators, or logic structures; the entirety of the language is you typing "DUH" into the command line, then hitting ENTER.

    Upon pressing ENTER, you are presented with every possible program that could ever exist. All you need to do is select the one you want.

    --

    Obliteracy: Words with explosions

    1. Re:So painfully obvious by Anonymous Coward · · Score: 0

      Isn't that the "Easy Button" that Staples sells already?

    2. Re:So painfully obvious by Anonymous Coward · · Score: 0

      Well, that's basically what all languages do today, right? It just so happens that that infinite menu of possible programs means the command line options to select a particular program are pretty esoteric and look a lot like a program's source code...

    3. Re:So painfully obvious by Anonymous Coward · · Score: 0

      Given the infinitely fast machine it is running on I expect it to automatically score based on my facial expressions or neural patterns and generate the exact program adjusting to my reactions to the results faster than they can filter into my conscious mind. DUH should just do what I want and I shouldn't even manage to type the D.

    4. Re:So painfully obvious by Anonymous Coward · · Score: 0

      ... All you need to do is select the one you want.

      You jest but I have met computer users who think exactly this; year after year.

    5. Re:So painfully obvious by Anonymous Coward · · Score: 0

      Isn't that just /dev/urandom anyway? (Infinite monkeys and such...)

    6. Re:So painfully obvious by Anonymous Coward · · Score: 0

      And the computer to help you find the one you want from the infinite choices is a computer whose merest operational parameters we are not worthy to calculate. A computer of such infinite and subtle complexity that organic life itself shall form part of its operational matrix.

    7. Re:So painfully obvious by Anonymous Coward · · Score: 0

      My thought also but I picked the name DWIM. And why select a program? All you need is the correct result which will be selected for you.

  8. If computers were infinitely fast by Anonymous Coward · · Score: 0

    You'd be able to create your own private universe. So I'd program by using the properties of physics.

    CAST IN THE NAME OF GOD
    YE NOT GUILTY
    etc.

    1. Re:If computers were infinitely fast by tietokone-olmi · · Score: 1

      Also, you'd be able to experimentally prove or disprove halting for every possible program: a halting program will terminate instantly, and a non-halting one will not.

  9. An ability to stop by Anonymous Coward · · Score: 0

    once you hit 88 mph, it creates a really weird paradox

    1. Re:An ability to stop by glenebob · · Score: 1

      You should be punished for mentioning Paradox in a discussion of "ideal" programming languages.

    2. Re:An ability to stop by Holi · · Score: 1

      He commented on this idiotic click bait of an "article", he is being punished.

      --
      Sorry, teleporters just kill you and then make a copy. A perfect, soul-less copy.
  10. That makes no sense... by famebait · · Score: 4, Insightful

    Getting rid of garbage collection? The feature whose whole point is boosting productivity at the cost of performance? In a setting where performance is explicitly not and productivity explicitly is? Can you spell "hangup"?

     

    --
    sudo ergo sum
    1. Re:That makes no sense... by beelsebob · · Score: 3, Insightful

      Yeh, I was thinking exactly this. The valid reasons for getting rid of garbage collection are along the lines of "it causes the application to end up using a shit ton of memory if you want it to be any way performant", and "you can't get sensible real time guarantees when your whole program might pause to execute GC".

      GC is exactly what you would want if you can guarantee that it executes in 0ms.

    2. Re:That makes no sense... by ender8282 · · Score: 1

      Yes I can T R O L L. And you shouldn't be feeding them...

    3. Re:That makes no sense... by Anonymous Coward · · Score: 0

      No, he is right. The future of computing includes not needing memory allocation at all, rendering memory release (either manual or automatic) useless.

      It's still a long way to go, and does not actually depend on CPU speed, rather on CPU/System design. We'll get there, eventually.

      Alvie

  11. Infinitely fast? by Anonymous Coward · · Score: 0

    In that case automatic verification of the halting problem for the code during compilation.

    Or did you just mean "very fast"?

  12. Garbage collection by mwvdlee · · Score: 1

    getting rid of the garbage collection

    Why would that be the chief thing to drop if you had infinite performance? The only big problem with garbage collection IS performance.

    --
    Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
    1. Re:Garbage collection by Anonymous Coward · · Score: 0

      getting rid of the garbage collection

      Why would that be the chief thing to drop if you had infinite performance?

      Because you also have infinite memory capacity?

    2. Re:Garbage collection by beelsebob · · Score: 2

      The amount of memory GC uses isn't a problem if you have infinite performance.

      GC uses more memory than manual memory management exactly because you can't run it all the time - you have to let the heap grow, and then do a collection when you stand a chance of actually freeing a bunch of memory.

      With infinite performance, you can run it after every single line of code that might possible have changed which bits of the heap are referenced still, that means you actually get *improved* memory usage over manual memory management (since no one gets that perfect, in general).

    3. Re:Garbage collection by tepples · · Score: 1

      With infinite performance, you can run it after every single line of code that might possible have changed which bits of the heap are referenced still

      Which makes it more or less equivalent to reference counting.

    4. Re:Garbage collection by DickBreath · · Score: 2

      One of the goals of the problem statement was to improve human productivity. Therefore GC would be a requirement. Not having to manually manage memory removes a large burden from programmers.

      GC has an often overlooked, but fairly silent other advantage. It greases the compatibility of libraries written by many different authors. All of the libraries are guaranteed to have the same memory management discipline. Just to pick on C / C++ for example, multiple libraries might have different memory management disciplines. It is necessary to understand whether the API has special functions to deallocate some structure, and who is responsible for such deallocation. With GC all of that disappears. If an API call hands me back a datastructure, I just let go of it when I'm done with it. No concern about who deallocates it. The GC is what deallocates it when there is no longer a reference to it.

      Another important attribute would be toolability. Java, for example, is very toolable. IDEs for Java are able to statically deduce a great deal and then offer intelligent suggestions to auto complete things as you type. There is doubt about what type of parameter some function has -- because it's statically typed. There is no doubt about what local and global variables you have available, of that type, which could be passed as the actual value for that parameter.

      Basically the Editor knows about your source code as well as the compiler does. If you click on some function name, or variable name, or class name, it is unambiguous where it is declared.

      Modern Java IDEs also can intelligently rename things. If you rename some identifier, the IDE knows precisely what other parts of your entire source code base need to have this same rename done. If I change function 'abc" to "def", not only is the declaration changed, but every reference to that function throughout the program. But if there were another local function somewhere else with the name "abc", it would not be changed, nor would references to that. The compiler knows exactly, unambiguously what references what.

      There are many other powerful refactoring tools as well. People who say they will use a simple text editor because they don't like the bells and whistles of a modern IDE is like someone saying that they would rather dig a huge ditch with a shovel because they don't like the noise of a backhoe.

      Static typing would be a must for large programs. Modern languages with type inference allow you to avoid typing in much of the type information, yet still have static typing.

      Static typing is not primarily about performance (although it is about that). (And the problem definition said performance is infinite.) Static typing is also about correctness of code and compile time checking, and the toolability and refactoring I mentioned.

      --

      I'll see your senator, and I'll raise you two judges.
    5. Re:Garbage collection by DickBreath · · Score: 1

      > The only big problem with garbage collection IS performance.

      Actually if you can have several times the memory than your program actually needs, then performance is no longer an issue with any modern concurrent GC.

      I'm serious.

      Programmer time is expensive. Hardware is cheap. Memory is cheap. Would you rather get your code to market sooner because you can use a higher level language without memory management in exchange for adding an extra 32 or 64 GB of memory? Getting to market sooner may be the difference between being in business or not.

      --

      I'll see your senator, and I'll raise you two judges.
    6. Re:Garbage collection by Anonymous Coward · · Score: 0

      Two words: reference cycles.

    7. Re:Garbage collection by beelsebob · · Score: 1

      No - it's still more correct than reference counting in that it manages to resolve reference cycles correctly.

      It just also requires a massive scan of the heap rather than just a simple decrement of an integer though.

    8. Re:Garbage collection by tepples · · Score: 2

      How does a garbage collector that handles circular references determine which objects to finalize first?

    9. Re:Garbage collection by lgw · · Score: 1

      One of the goals of the problem statement was to improve human productivity. Therefore GC would be a requirement. Not having to manually manage memory removes a large burden from programmers.

      GC and manual alloc/free are not the only choices. GC only really takes care of memory anyhow - there are many sorts of open/close pairs besides memory: file handles, locks, etc. Solve the bigger pattern, not just specifically memory.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    10. Re:Garbage collection by beelsebob · · Score: 1

      Typically such languages have well documented "your destructors can happen in any order" semantics, and it's up to the programmer to make sure that they're robust to that.

      Thankfully, the most common resource that a destructor cleans up is memory that the object references, which makes this somewhat a non issue.

    11. Re:Garbage collection by Anonymous Coward · · Score: 0

      > Not having to manually manage memory removes a large burden from programmers.

      It leaves programmers out of practice with respect to one type of resource, and the problems with resource strategy come right back at you with all other types of resource.

    12. Re:Garbage collection by Anonymous Coward · · Score: 0

      The only big problem with garbage collection IS performance.

      The other only problem is that it requires the system to have about three times as much memory to work well.

    13. Re:Garbage collection by Anonymous Coward · · Score: 0

      Programmer time is expensive. Hardware is cheap. Memory is cheap.

      This myth has to go. Not everyone is a game programmer.
      Memory isn't cheap. The only reason some people think that way is because the cost often can be offloaded to the end user.
      If you work with programming embedded systems then memory suddenly is extremely expensive.
      Think this way: You are programming a menu system for a microwave. It is going to be a production run of a million units.
      You have to choice to either pick a microcontroller that costs $2 per unit more, or you can check the compiler output for every new line you write to make sure that the assembly output is what you want.
      Optimizing the hell out of the program can save the company millions of dollars in this case.

      Memory isn't cheap, you just happen to be in a field where you don't have to pay for the memory you use.

    14. Re:Garbage collection by DickBreath · · Score: 1

      You're now talking about different problems. 1. Memory management. 2. Resource management.

      GC solves memory management.

      For resource management, there should be a language construct that brackets use of the resource. A bracket construct like a 'for' or 'while' loop. At the top of the bracket construct, as part of the language syntax, the resource is allocated, and the compiler generates the code to guarantee closing / releasing the construct at the bottom of the bracket construct. As an example, I would point out Java's 'try' with resource. Any object that implements the AutoCloseable interface can be used in this construct. A file. An IO Stream. A SQL connection. A SQL result set. In Java locks have been handled since the 90's with the 'synchronize' block with brackets. Since these constructions are all part of the language syntax, the compiler generates the code. It works on every platform. And there is GC.

      Why not use the resource management idiom to manage memory? Because you don't necessarily release memory in the same place as you allocate it. A library API call may allocate some complex structure and return it to the caller. The caller may pass parts of that structure into other library APIs written by other authors, in different decades of past time. Even if I let go of my main reference to the main structure. other code may be holding on to sub-parts of that original complex structure. With GC you simply don't have to worry about when to release anything. If you no longer use it, just let pointers fall out of scope. Or assign null to a pointer in an object so it no longer points to anything -- thus possibly making what it did point to become GC'able.

      --

      I'll see your senator, and I'll raise you two judges.
    15. Re:Garbage collection by lgw · · Score: 1

      You're now talking about different problems. 1. Memory management. 2. Resource management.

      Memory is just one resource. In some domains, it's not even the most frequently managed.

      For resource management, there should be a language construct that brackets use of the resource.

      The core concept here is "scoped objects". Most objects have a scope in which they are valid, and should be deterministically cleaned and freed on the way out of that scope (whether by return or throw). In C# and Java you can do this awkwardly with using/try-with-resources. In C++ you can do this effortlessly by making your primitives (pointers, file handles, etc) scoped objects.

      Why not use the resource management idiom to manage memory? Because you don't necessarily release memory in the same place as you allocate it.

      No different from any other resource. Some objects aren't scoped, and have lifetimes determined in some complex way. It would be nice to have reference-counting and GC as choices for explicit declaration for those times. C++ does refcount well, and that's the 90% case, but optional GC would sure be nice as another tool in the toolbox.

      GC is certainly handy from time to time, but scoped objects are the 80%+ case in most domains.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    16. Re:Garbage collection by Anonymous Coward · · Score: 0

      If the computer was able to run compilers with infinite speed, Java would lose the advantage it has of introspection for implementing those IDE features. Already, clang can produce the output to allow the same analysis to be done for C and C++, being able to keep this up to date with no performance hit would bring it even with the Java VM's ability to unload and reload classes on the fly.

    17. Re:Garbage collection by Anonymous Coward · · Score: 0

      How does a garbage collector that handles circular references determine which objects to finalize first?

      I don't claim much knowledge of memory management. The following from baker seems interesting to me. Don't know how it would work with co-routines...

      Henry G. Baker, Carl Hewitt. 1977. “The Incremental Garbage Collection of Processes”. ACM. SIGPLAN Notices 12, 8 (August 1977), pp. 55–59.

  13. CLP by sourcerror · · Score: 2

    It should be a highly parallel language, where you can program with constraints.

    1. Re:CLP by Actually,+I+do+RTFA · · Score: 1

      What? Fuck no!

      Look, parallelization solves a lot of problems on current, non-infinite programs. However, it also introduces complexity. If speed were not an issue, and you just wanted to optimize in terms of programmer time, you would not allow multiple threads. It would be literally: LoadResource(); SolveTravelingSalesmanProblem(); Something(); in order instead of setting up callbacks so that the person could keep using the computer and queueing other things up while that was happening. Far easier to see at a glance and debug. OF course, impossible in the real world

      --
      Your ad here. Ask me how!
    2. Re:CLP by _merlin · · Score: 2

      If the computer is infinitely fast, you can avoid the complication that parallelism brings with it. No need to spread out over multiple execution units if one is infinitely fast anyway.

    3. Re:CLP by Anonymous Coward · · Score: 0

      You missed the last step... Profit();

  14. GC by Anonymous Coward · · Score: 0

    Would take no time and its nice not worrying about garbage. Doesn't say infinite memory...

    1. Re:GC by DickBreath · · Score: 1

      GC doesn't mean infinite memory. It simply means the programmer doesn't have to expressly release memory.

      One of the problem definitions was to increase human productivity. GC does this in spades. Is it any wonder why so many modern and high level languages have GC? Python. Java. C#. JavaScript. All lisps. Logic programming languages. CAS (computer algebra systems).

      GC doesn't let the programmer allocate infinite memory any more than C lets you allocate infinite memory. The difference is that you no longer have any concern about deallocating it. Just like you don't have any concern about which branch instruction to use. Or how many bytes back the relative branch instruction is for this while loop. GC is simply one more burden that higher level languages remove from the programmer.

      --

      I'll see your senator, and I'll raise you two judges.
    2. Re:GC by Imrik · · Score: 1

      That was kinda his point, the original question doesn't say you have infinite memory so there's no reason to get rid of GC, especially since you don't take the usual performance hit from it.

  15. garbage collector? by Frederic54 · · Score: 2

    There is no garbage collector in C, so it must be the ideal programming language ;-)

    Special mention for assembly too.

    --
    "Science will win because it works." - Stephen Hawking
    1. Re:garbage collector? by SomeoneFromBelgium · · Score: 1

      Yep. All those mallocs and frees are sure to boost productivity!

    2. Re:garbage collector? by Anonymous Coward · · Score: 0

      There is no garbage collector in C, [ ... ]

      I thought that in C, exit (3) was the garbage collector. Or was it _Exit (2). Or was it like using alloca in main() - just use the stack and exit; don't call fork (2), use vfork (2). I have never used clone (2) but that might cause some problems :) What about unboxed numbers and indirect addressing ....

      [ ... ] so it must be the ideal programming language ;-)

      I think we lost that one a long time ago ;) just having some fun.

  16. Monkey's Paw by thedarb · · Score: 2

    It should be capable of understanding normal language, any known language, and execute the idea of what you asked for... But do so with disastrous unconsidered consequences. Man should not toy with technology!

    --
    This sig intentionally left blank.
  17. be able to type.. by trybywrench · · Score: 1

    I'd like to be able to type "i didn't explain that well but you know what i mean" and have that compile to the correct logic.

    --
    I came to the datacenter drunk with a fake ID, don't you want to be just like me?
  18. High level features by Waffle+Iron · · Score: 1

    An ideal programming language would support powerful features like the following statement:

    print("Does P == NP?", P == NP ? "Yes." : "No.")

    1. Re:High level features by Anonymous Coward · · Score: 0

      I just ran this on my infinitely fast computer and the answer is "Yes, but you already knew that".

    2. Re:High level features by tigersha · · Score: 1

      IT would also be able to prove ANY mathematical theorem by simply instantly going through all deductive steps in propositional logic.

      --
      The dangers of excessive individualism are nothing compared to the oppressiveness of excessive collectivism
    3. Re:High level features by Anonymous Coward · · Score: 0

      An ideal programming language should be able to infer the print(" and ", P==NP ? "Yes." : "No.") parts of that statement. No need for such verbose and arcane syntax when the compiler/interpreter has infinite power at its disposal to analyze your natural language input.

  19. code would look like shit by netsavior · · Score: 5, Funny

    I just imagine a world of cross-joins, extremely complicated in-string, lazy iteration and the like.

    If there were no penalty for pivoting data or iterating though sets, we would all gravitate toward the shittiest constructs imaginable...

    I mean hell, browsers are basically expected to be limitless now... HTML hello world used to look like "Hello World" Now it looks like
    "Hey javascript framework, load 500 modules, then ask the server what "Hello" is, then ask the server what "world" is, then style it all in whatever your 13 generated CSS files say it should be styled as, and tell google analytics that someone looked at my hello world page."

    1. Re:code would look like shit by sinij · · Score: 2

      I propose netsavior lema: Infinitely fast computers would result in infinitely shitty code run on it all the time.

    2. Re:code would look like shit by Anonymous Coward · · Score: 0

      You forgot to load the adverts too.

    3. Re:code would look like shit by Maxwell'sSilverLART · · Score: 1

      And it wouldn't matter in the end, because the performance would be the same.

      --
      Moderate drunk! It's more fun that way!
  20. Do What I Mean by Anonymous Coward · · Score: 0

    When computers become "infinitely fast", having them "Do what I mean" vs "Do what I say" will be the singular distinguishing capability that will finally make the contraptions useful to every day humans.

  21. since we're dreaming by Anonymous Coward · · Score: 0

    English... including the command "you know what I meant" to easily get rid of bugs. Great question... or... something.

    1. Re:since we're dreaming by gfxguy · · Score: 1

      Yeah, but really... I have always thought that, when I missed the semicolon at the end of the line, and the compiler told me "missing semicolon on line whatever," my first thought is "if you know that's the problem, why don't you just fix it, then?"

      --
      Stupid sexy Flanders.
  22. Whole New Vistas for Zeno's Paradoxes by American+AC+in+Paris · · Score: 2

    Wouldn't an infinitely fast computer be completely useless in that doing anything with it would result in a race condition?

    --

    Obliteracy: Words with explosions

    1. Re:Whole New Vistas for Zeno's Paradoxes by Anonymous Coward · · Score: 0

      No, you'd just use locks everywhere. With infinite speed, the overhead caused by locking before every action wouldn't matter.

    2. Re:Whole New Vistas for Zeno's Paradoxes by Anonymous Coward · · Score: 0

      Nope. There would be no need to multi-threaded code with a infinitely fast computer. A single thread would be all you need. No locks, no synchronization, no race conditions.

    3. Re:Whole New Vistas for Zeno's Paradoxes by Anonymous Coward · · Score: 0

      You mean it would have taken it null time to get into first race condition and then wait in a lock forever. This probably means that there would be only one thread. That is even logical - if it is so fast it can do all in a sequence not in parallel where locks and race conditions are happening directly after start due to speed being so high.

    4. Re:Whole New Vistas for Zeno's Paradoxes by American+AC+in+Paris · · Score: 1

      No, you'd just use locks everywhere. With infinite speed, the overhead caused by locking before every action wouldn't matter.

      Yes, but if speed is infinite, then results are produced instantaneously, regardless of their complexity; the computer performs any given task in zero time. If the computer exists as a physical entity that performs some kind of action to achieve its result (e.g. shunting electrons down pathways etched in silicon, actuating relays, modulating-the-shield-harmonics-spooky-motion etc,) then in order for it to work, that action needs to happen in zero time, as well. The concept of sequential physical actions in zero time is the hangup, here--hence the issue of the race condition. For an infinitely fast computer to exist, you need to be able to cause a physical sequence of events to occur in literally zero time.

      Every single lock request you make happens at exactly the same time, which is also the exact same time at which everything else in your program is occurring. Regardless of where it is in your code, it's all happening at the exact same time in the computer itself by definition.

      --

      Obliteracy: Words with explosions

    5. Re:Whole New Vistas for Zeno's Paradoxes by Anonymous Coward · · Score: 0

      Analog computers satisfy your criteria without deadlocking. (Provided they're functioning properly.) Look up some of those awesome trajectory calculators on naval warships from the WW2 era. They're a fantastic example of an instantaneous computation, with instantaneous transmission to all necessary parts of the ship.

      And it's all running in an instantaneous computation engine called "the universe".

      Only particle propagation requires a delay. Of things that rely on particle propagation, only brains and electronic computers use particle propagation for signal processing and computation. If you're going to limit yourself to one of those devices, then you should already expect the consequences and limitations.

    6. Re:Whole New Vistas for Zeno's Paradoxes by Anonymous Coward · · Score: 0

      Uh no. An infinite number of actions happening in a unit of time does not imply the actions take zero time, they take an infinitesimal, but still non-zero, period of time. Besides, in a hypothetical, all other things are supposed to be equal, so infinitely fast processors would still require doing one thing at a time. Additionally, we already have things in place to deal with programs that request resources simultaneously.

    7. Re:Whole New Vistas for Zeno's Paradoxes by hcs_$reboot · · Score: 1

      This is where the contradiction lies. Programming logic is based on sequentiality. Meaning operation A must be done before operation B, since B depends upon A. If the computer is "infinitely fast", any operation is instant, there is no order. Maybe saying "the program execution can be started any time in the past in order to get the result now" would make more "sense" (quantum computers are supposed to be able to do that..).

      --
      Slashdot, fix the reply notifications... You won't get away with it...
    8. Re:Whole New Vistas for Zeno's Paradoxes by Anonymous Coward · · Score: 0

      How about a finite, but small and constant time. If it takes more operations they just happen faster. In the real world you'd find it sucking itself into a black hole due to the energy densities but other than that it's less philosophically problematic.

    9. Re:Whole New Vistas for Zeno's Paradoxes by tietokone-olmi · · Score: 1

      No user-perceptible I/O latency either: programs waiting for user input will go back to waiting in exactly 0 seconds.

    10. Re:Whole New Vistas for Zeno's Paradoxes by Anonymous Coward · · Score: 0

      Sounds like the T.A.R.D.I.S. blowing up

    11. Re:Whole New Vistas for Zeno's Paradoxes by Anonymous Coward · · Score: 0

      For the purposes of the thought experiment, I assume "infinite" to mean, "sufficiently fast to perform any work you need with any arbitrary development framework/language overhead".

    12. Re:Whole New Vistas for Zeno's Paradoxes by Anonymous Coward · · Score: 0

      So basically your code is either deadlocked or gives the wrong answer, take your pick.

  23. Determinism by freax · · Score: 1

    They don't have to be infinitely fast. They need to be infinitely deterministic. Ie. a measurement or an interrupt must arrive in time, with in-time defined by the maximum timing boundaries of the experiment being executed.

    If that happens with a garbage-collector (which is now infinitely fast), then we could perhaps use higher languages for real time.

    Obviously if performance no longer matters at all, all function parameters, both in and out, could be checked. Sure why not, then.

    And how about having infinite memory and storage resources at equally infinite reading and writing speed?

    However, rfc1925:

          (2) No matter how hard you push and no matter what the priority,
                    you can't increase the speed of light.

    1. Re:Determinism by DickBreath · · Score: 1

      > then we could perhaps use higher languages for real time.

      You can already use GC languages for soft real time. Like a game. Or signal processing. Simply DO NOT allocate any data structures during the soft real time loop. Set up everything. Allocate all data structures in advance. Then enter your soft real time loop, do your signal processing, high frequency trading, game loop, etc.

      I would point out that big banks and enterprise applications use Java. Java is used in high frequency trading. So are other languages. But the fact that Java is a GC language is my point.

      --

      I'll see your senator, and I'll raise you two judges.
    2. Re:Determinism by freax · · Score: 1

      Hey! It's not our fault that your employer makes shitty technology decisions. No need to make us worry about it.

      Silly money people.

    3. Re:Determinism by DickBreath · · Score: 1

      It's so silly that Java is one of the most used languages for projects of any significant size or scope.

      Link 1
      Link 2
      Link 3
      Link 4

      You're too narrowly focused purely on the technology and not on the bigger picture about how to make money. We don't just do all this programming for our personal amusement. We do it to put food on the table.

      --

      I'll see your senator, and I'll raise you two judges.
  24. Principle of creativity by Anonymous Coward · · Score: 0

    "Imagine you/we had no boundaries whatsoever" is generally *not* a good way to induce bursts of creativity. It's like creating a game where there are no rules.

  25. Minimizing lines of code to zero by scourfish · · Score: 1

    An infinitely fast computer should be able to interpret my programming abstractions based off of zero lines of code.

  26. If computers were infinitely fast ... by gurps_npc · · Score: 0

    1) The language would be graphical, not English based. Not everyone speaks English and all languages, including English have in built issues. You want a loop, drag and drop (or use control keys to instantly create) a loop icon, don't type it. With speed not an issue, go for the fancy graphics.

    2) The language would be interpreted, not compiled - infinite speed so no problem.

    3) The language would be object oriented

    4) The language would have no declarations or variable types (infinite speed so these things do not matter as much).

    --
    excitingthingstodo.blogspot.com
    1. Re:If computers were infinitely fast ... by skids · · Score: 2

      1) The language would be graphical

      No, physical. It would have one analogue keyword consisting of how hard you are hitting the robot with the stick, and/or how loud you are yelling "no, you stupid git!"

    2. Re:If computers were infinitely fast ... by DickBreath · · Score: 1

      Static typing is not just about performance. It is also about program correctness and ability of your IDE to provide powerful refactoring capabilities.

      --

      I'll see your senator, and I'll raise you two judges.
    3. Re:If computers were infinitely fast ... by Actually,+I+do+RTFA · · Score: 1

      Wow, it's hard to explain how wrong you are. Literally the only thing I agree with is point 3.

      I have programmed products, real complex products, in graphical interfaces. Where you create a loop like you suggested. It is hell. I can type far faster than use a GUI. And I can edit text at many more multiples faster. Whether "English" or not, most keyword sets are in the under 100/200 words, and the libraries will have to be named anyway. Make it Dutch, and I'll just learn a couple hundred Dutch words.

      Compilation is only a problem because it takes time. But it also catches whole categories of bugs. I admit it would blur the line between self-interperting and self-compiling code if speed was infinite.

      Declaring variables used to be about processor efficency. Now, it's as much to catch programmers doing something stupid/allowing coordination among programmers as it is to tell the computer what to allocate. Try writing PHP code, and try accidentally declaring a new variable via typo, and then tell me how horrible declarations are.

      --
      Your ad here. Ask me how!
    4. Re:If computers were infinitely fast ... by Anonymous Coward · · Score: 0

      I am intrigued by your vision, and can now see how a programming career could be most satisfying.

    5. Re:If computers were infinitely fast ... by Anonymous Coward · · Score: 0

      1) The language would be graphical, not English based. Not everyone speaks English and all languages, including English have in built issues. You want a loop, drag and drop (or use control keys to instantly create) a loop icon, don't type it. With speed not an issue, go for the fancy graphics.

      Why? Graphics is superior for a subset of problems, but not all (or even a majority). Simulink is great and all but I'd hate to try to write an office suite with it.

      2) The language would be interpreted, not compiled - infinite speed so no problem.

      Fair enough, though I would add compilation as an option.

      3) The language would be object oriented

      Dear god, why? I would design the language to *allow* object oriented techniques to be used but I see no reason to be dogmatic.

      4) The language would have no declarations or variable types (infinite speed so these things do not matter as much).

      Variable declarations are useful things: they tell you what to expect a variable to be. Take that away and you're stuck in a maze of twisty passages that all look much the same.

  27. Checking all edge cases. by Anonymous Coward · · Score: 0

    Being able to detect if any inputs would cause a hang/endless loop. As your program could be expressed as a BB(programLength), meaning that infinite loops would be detectable. (BusyBbeaver function)

    Memory leaks could be found quickly, by trying all possible inputs infinite times, in each possible order.

    Full Asserts could be checked

    Checking for side effects.. Run chunks of code side by side, and see if the states change depending on the side code.

    Building custom compression... Build a self extracting executable, with the absolute minimum amount of bytes possible.

    Auto-recoding.. Have the system automatically recode the program into an exact specification (for review by human), and then re-compile based on spec (ultimate code optimizer)

    Knapsack, TSP, Brute_force_decrypt would be standard libraries.

    1. Re:Checking all edge cases. by Anonymous Coward · · Score: 0

      Or memory leaks would consume all the memory on startup instead of taking days or weeks.

  28. Make sure it implements ... by fahrbot-bot · · Score: 1

    ... "register" and "inline" - to make it even faster than infinitely.

    --
    It must have been something you assimilated. . . .
  29. Stupid question by Anonymous Coward · · Score: 0

    If computers were infinitely fast, things would be way too different to predict accurately:
      - there would be no encryption, hence no online banking/shopping or anything else that required a secure connection
      - computer graphics would be almost instantly indistinguishable from real life objects
      - neural networks, quantum computers, non-polynominal algorithms would all be viable

    And thus, all programming languages would become obsolete since neural nets simulating human level intelligence could be created - thus we'd have star trek TNG style interaction with computers or better. The entire software industry would be instantly over.

    Oh - so you meant not infinitely fast after all? Well, it's still a dumb question. As computers get faster, new ways of utilizing that power will emerge to do things that are not possible today. Gone will be things like 2D video, and we'll get 3D holography instead. After 3D holography, who knows - probably encodings that allow for touch/taste/smell and more (after that, who knows - probably way to encode an object itself for replication). The more speed/bandwidth we get, the more we'll use, and we'll continue to whine that we don't have quite enough for the latest cutting edge stuff. Hence fast programming languages will always be needed for those applications (while the 50Gb UIs will be ever more created by people saying that "speed doesn't matter").

  30. Thought experiments... by kamakazi · · Score: 1

    Need to be built as carefully as real experiments. This isn't one. If the computer is infinitely fast then the computer language can be structured to process non ambiguous natural language, we don't need computer languages, just people trained to be unambiguous.

    That is totally ignoring the fact that our society runs on the premise that computation is expensive, and an infinitely fast computer would destroy all concepts of security based on expensive computation, and society would collapse and there would be no companies left to build these infintitely fast computers.

    I am sorry, I don't know Tim Sweeney, but that question brings up one of my own. How have we as a technical society managed to produce people with the implied logical skills that programming requires (and his wikipedia bio does indicate he is a competent programmer, even a good innovative one)
    but who can't think a simple fallacious question through before tweeting it, or at least can't communicate the real question he wants to ask behind this ridiculous tweet? This is really a very fundamental logic flaw here. it is the equivalent of asking "if price were no object..." Given any infinite resource just do it how ever you want, it's not like you are going to run out.

    --
    "Proximity to wonder has blunted our perception and appreciation of it" --Tim Hartnell in 'Exploring ARTIFICIAL INTELLI
    1. Re:Thought experiments... by Anonymous Coward · · Score: 0

      Building on your last paragraph, I think with infinite speed, you'd probably see a lot more declarative languages and languages that use more brute-force approaches for everything. Probably less variables with correspondingly less memory use, as recalculation is no longer a penalty.

  31. Natural language by Anonymous Coward · · Score: 0

    Computers with that much processing and computational power should be able to handle every programming task with natural language. I should be able to ask for a task to be completed without requiring me to program it in some other language.

    Simply ask the computer to do every task. No HMI required other than voice command.

    1. Re:Natural language by TimSSG · · Score: 1
      Yep, the computer needs to understand and be able to "do the needful". Tim S.

      Computers with that much processing and computational power should be able to handle every programming task with natural language. I should be able to ask for a task to be completed without requiring me to program it in some other language.

      Simply ask the computer to do every task. No HMI required other than voice command.

  32. Multithreading by Anonymous Coward · · Score: 0

    Multithreading ruins otherwise sane applications. Multithreading exists solely for performance but correct multithreading code is a disaster to write and maintain (even with libraries managing the nitty-gritty details). Being able to run all network and database operations on the UI thread on Android, for example, would result in far less hurt and fewer application crashes.

  33. Applications that run infinitely fast... by Anonymous Coward · · Score: 0

    Crash infinitely faster.

  34. No garbage collection? by Anonymous Coward · · Score: 0

    The problem with GC is that it causes your program to pause at inconvenient times. If computers are infinitely fast, there's no reason not to have garbage collection!

    The alternatives are:

    1. Manual allocation/deallocation: this is what C uses, is incredibly error-prone, and distracts from the programming task at hand. GC (bookkeeping) is amortized over malloc/free calls.

    2. Reference counting: this is what modern C++ uses with its various smart pointers, but choosing a type of smart pointer distracts from programming and circular references require special handling (weak references or GC). GC is amortized over malloc/free calls, and may still need to pause the program to clean up circular references.

    3. No dynamic allocation: this is what memory-constrained systems (like many embedded systems) do, but is not useful for general-purpose programs.

    4. Everything is a leak: if you have infinite memory you can just keep allocating forever and never free anything. However, this is unrealistic, and may not be desirable anyway if you want GC to clean up things like open files or event handlers with weak references to objects that are no longer needed.

    In other words, GC like Java or .NET have is really the ideal feature -- except that it sometimes slows down your program, and that's solved by making the computer infinitely fast.

    dom

    1. Re:No garbage collection? by Sigma+7 · · Score: 1

      The problem with GC is that it causes your program to pause at inconvenient times.

      Unless you use a programming language that lets you launch GC whenever it's most convenient (not too many do so). Bonus points if you don't need system specific behavior to get access to your own telemetry (which lets you time it properly.)

    2. Re:No garbage collection? by UnknownSoldier · · Score: 1

      Mod parent +1 Informative !

      You've nailed the biggest problem with a GC -- it is non-deterministic.

      If one could provide a _hard_ deadline of X milliseconds to the GC then more people would adopt it -- but right now you get non-deterministic pauses at the most inconvenient time. GC makes for a shitty User Experience.

  35. syntax by Mysund · · Score: 2

    It should be able to understand and do whatever comes after "I want you to..." both as a vocal or written statement.

  36. Very simple by caywen · · Score: 1

    I would create a counter to count from 0 to infinity, and point the CPU IP do the address of that big integer. The program I want will be generated somewhere along the way. The trick is to filter out the ones you don't want.

    1. Re:Very simple by freax · · Score: 1

      You just created the first need for symmetric multiprocessing right there: as your first computer's results must be filtered by a second infinitely fast computer.

    2. Re:Very simple by Anonymous Coward · · Score: 0

      The trick is to filter out the ones you don't want.

      Godel might be able to help you there. Or not.

  37. I've done well @ it per our /. peers by Anonymous Coward · · Score: 0

    I'm going to continue using the Host File Engine. Your software is well written, functional. The Host File Engine performs exactly as promised by mmell

    his hosts program is actually pretty good by xenotransplant

    his hosts tool is actually useful for those cases in which one does indeed want to locally block stuff outright while consuming minimum system resources by alexgieg

    I've never tried to belittle (APK's) work, I've flat out said it's good by BronsCon

    take a look at the APK hosts file engine by SuperKendall

    APK is kinda right. I've tried his hosts file generating software. It works by bmo

    I like your host file system by Karmashock

    I find your hosts file admirable by vel-ex-tech

    * My code's liked + recommended & hosted by Malwarebytes' hpHosts!

    APK

    P.S.=> Delphi 32/64-bit (no null-terminated string buffer overflows like C/C++) single .exe multithreaded "Hyper-Alloy combat chassis" virusproof uncrashable code design gets you THOSE kinds of reviews above... apk

  38. Assembly language would make it infinitely faster. by zephvark · · Score: 1

    Your program would therefore be done before you'd written it. You can then say, "what a dumb-ass I will have had been." I'll just rewrite it. Oh, I will have did? That's looking pretty good. Let's just...

  39. He didn't mean "getting rid of..." by RJBeery · · Score: 1

    The quote means "getting rid of having to worry about manually collecting garbage" (destructors, etc). Presumably the infinitely fast computers would handle all of these details in the background and the human interaction would be abstracted away from the computer towards more naturally-human ways of thinking.

  40. Could've Been First... by lance_of_the_apes · · Score: 1

    Decided to wait ten minutes for the guaranteed litany of responses concerning garbage collection and how its removal would be the LAST thing you'd want to do..

    Seems to me this hypothetical language is the one in which Elon Musk's universe is written. ;)

  41. Wirth's Law by rikkitikki · · Score: 2

    I guess he never heard of Wirth's Law. Compared to 20 years ago, our computers are operating at and infinite speed with ridiculous amounts of RAM. Yet the desktop, IDEs, and applications seem slower than they were 20 years ago, require Gigabytes(!!!) of RAM, and do not seem to do anything more than they did before. Go figure.

    1. Re:Wirth's Law by Anonymous Coward · · Score: 0

      I guess he never heard of Wirth's Law.

      This infinitely fast computer is too slow! It can only handle a countable number of instructions.

  42. no need for programming by Anonymous Coward · · Score: 0

    With an infinitely fast computer all permutations of the code would be tried and all of the answers presented. Statistically all of the answers would be compared and the most likely answer displayed.
    Alternatively the user could then just select out the correct answer from the infinite number of incorrect ones and therefore solve any problem.

    Of course the power bill for the computer would be high!!

  43. What if by Anonymous Coward · · Score: 0

    Expanding on the question..
    What if there is infinite storage?

    There would be no need for a infinitely fast computer.

    1. Re:What if by Anonymous Coward · · Score: 0

      true

  44. Only one... by Anonymous Coward · · Score: 0

    A direct link to a human brain. I wouldn't use Windows though, you might shit your panties when it BSODs.

  45. Instant failure by Anonymous Coward · · Score: 0

    I imagine if a computer was infinitely fast, it would be able to execute the program's core loop an infinite number of times in an instant. It follows then that it would instantly reach the inevitable point where it encounters a fatal error.

  46. return 0; by Anonymous Coward · · Score: 0

    return would be the only keyword, and 0 the only allowed value.

    With such a small language coding productivity would be remarkable. As a side bonus, the entire lexer and parser would fit in a small FSM. Actually, screw that, just take *any* input and return object code equivalent to "return 0" - we can remove syntaxical and syntactical errors without the need for testing, thus increasing QA productivity.

    Functionally speaking the language would be useless, but developers could be incredibly productive at writing that code. The question is a classic example of Garbage in, garbage out.

    OK, playing along a little bit. For coding productivity you'd want developers to never need to worry about memory usage, mallocs, swap, disk etc. Just let them worry about using data elements as they see fit and make the system handle storage and permanence. I don't see how you do that without garbage collection techniques.

     

  47. DWIM by Anonymous Coward · · Score: 1

    The language contains a single function, that takes anything as input.

    This information is then converted to a single opcode that is executed on the computer.

    Documentation:
    DWIM :: Do What I Mean

    Output := DWIM([any])
    Converts, computes, or calculates the user's desired output given any input.

    Example 1:
    Arthur Dent executes the program:
    Foo:=DWIM("Potted Petunia")

    Foo now contains a perfectly brewed cup of tea in a fine bone-china cup with matching gold rimmed saucer.

    Fully check input prior to executing. A null string will cause the universe to cease to exist.

    Aside - Stupidity of this ranks up there with Superman vs. Thor, or similar kindergarten-esq "My Ghod can beat up / more powerful than your Ghod stuff."

    Fred in IT

  48. Ask this question another way... by yodleboy · · Score: 4, Insightful

    What a pedantic bunch. Mental race conditions because of the word 'infinitely'. Anyway, let's ask this question a different way. "If modern hardware had been available at the time, how would you have designed languages like C, C++ and JAVA? What compromises were made that continue to impact those languages?"

    1. Re:Ask this question another way... by Anonymous Coward · · Score: 0

      He probably should've first asked: "What are the attributes of an ideal question about programming languages in a thought experiment if I wanted to get meaningful answers instead of pedantic know-it-alls stating the obvious."

      ...
      ...

      *waits for someone to point out that this question is more than 140 characters long...*

    2. Re:Ask this question another way... by American+AC+in+Paris · · Score: 1

      What a pedantic bunch.

      I mean, YES, and also, it turns out that the pedantic approach to this question is very very fun. :D

      --

      Obliteracy: Words with explosions

    3. Re:Ask this question another way... by avandesande · · Score: 1

      Probably something like what we have now but less resource efficient

      --
      love is just extroverted narcissism
    4. Re:Ask this question another way... by Anonymous Coward · · Score: 1

      Pedantic assholes... on slashdot?

    5. Re:Ask this question another way... by thegarbz · · Score: 1

      A bunch of programmers reading instructions literally and interpreting a question like a computer would? Yeah who'd've thought.

  49. They already are by Anonymous Coward · · Score: 0

    and the fact that anything still takes perceptible time tells me that even if computers had gamma ray clock rates, you programmer asswipes would still find a way to gobble up every single cycle doing god-knows-what-except-what-I-want.

  50. Hard coded gosubs by sandbagger · · Score: 1

    If it's infinitely fast, and I don't have to maintain the code, why not?

    --
    ---- The above post was generated by the Turing Institute. Maybe.
  51. Good News/Bad News by __aaclcg7560 · · Score: 1

    Never upgrade the hardware to run Windows ever again — I'll probably be out of the job as an IT tech.

  52. Naming, copyright, and caps by tepples · · Score: 1

    library includes (why load separate libraries when the system is able to have all of them available?)

    I can think of reasons.

    The first is namespacing. A program needs to identify that it wants to use a particular library or security updates thereto, as opposed to a similarly named library without the needed functionality.

    The second is copyright. A computer program is thought to be a derivative work of the libraries that it is explicitly designed to load.

    The third is bandwidth. Even if computers are infinitely fast, radio frequency bandwidth isn't. It costs money to launch a satellite or build a tower, money that must be recouped from subscribers who may not be willing to pay for a large enough monthly data transfer quota to allow continuous retrieval of every library under the sun.

    1. Re:Naming, copyright, and caps by tlhIngan · · Score: 2

      I can think of reasons.

      The first is namespacing. A program needs to identify that it wants to use a particular library or security updates thereto, as opposed to a similarly named library without the needed functionality.

      The second is copyright. A computer program is thought to be a derivative work of the libraries that it is explicitly designed to load.

      The third is bandwidth. Even if computers are infinitely fast, radio frequency bandwidth isn't. It costs money to launch a satellite or build a tower, money that must be recouped from subscribers who may not be willing to pay for a large enough monthly data transfer quota to allow continuous retrieval of every library under the sun.

      And I'd design the language so you don't worry about that. If you don't use a library, it will automatically be removed.

      Hell, I don't think I would even bother with such low level trivialities.

      Star Trek is the better example. They ask the computer what they want done, the computer figures it out and presents them the output. They're programming, but not. Or how they program the holodeck - they ask the computer to generate a character on the holodeck, then load up various behaviours using commands. They can even program simulations of characters.

      Or how they reprogram the Universal Translator with a few parmeter changes and get it working again, or adjust the phasers to transmit in some way You think it up and with a few keystrokes, everything is reconfigured.

    2. Re:Naming, copyright, and caps by tepples · · Score: 1

      And I'd design the language so you don't worry about that. If you don't use a library, it will automatically be removed.

      Under such a design, how would a library be retrieved for the first time without requiring payment to the ISP to increase the user's monthly Internet data transfer quota?

      Hell, I don't think I would even bother with such low level trivialities.

      The lawyers would. In the Napster, Aimster, and Grokster cases, a company was held responsible for its users' copyright infringement. If the execution environment that your company publishes treats copyright as "low level trivialities", how long do you expect your company to continue to exist?

    3. Re:Naming, copyright, and caps by Imrik · · Score: 1

      Although the holodeck is also the perfect example of what can go wrong with such a language.

    4. Re:Naming, copyright, and caps by ewibble · · Score: 1

      You would still have to program the language recognition, making the computer faster doesn't make it understand you.

      Also programing languages are formal, and have very strict definitions, natural language is not, people miss interpret language all the time not just they get it wrong but because it is ambiguous. That is why you use maths in proofs, not English. Maths is a form of communication that supplements English.

      Yes you will get people just talking to computers, but that will be more like user interface, not a programing language. Just like in minecraft if you place a block, that is not considered programming, even you are telling the computer what to do.

    5. Re:Naming, copyright, and caps by PingPongBoy · · Score: 2

      Star Trek is the better example. They ask the computer what they want done, the computer figures it out and presents them the output. They're programming, but not. Or how they program the holodeck - they ask the computer to generate a character on the holodeck, then load up various behaviours using commands. They can even program simulations of characters.

      Or how they reprogram the Universal Translator with a few parmeter changes and get it working again, or adjust the phasers to transmit in some way You think it up and with a few keystrokes, everything is reconfigured.

      The question was about an infinitely fast computer. Star Trek is a few steps beyond current computer speeds but still not infinite. Still, thinking Star Trek is better than what some others are thinking so far.

      When you go into a physical library, you see knowledge and other works somehow compiled, for all you know over an infinite past amount of work. You wouldn't dream of spewing such an output within your own predicted lifetime. Then being a slashdotter, you ask yourself, what is the ultimate state of the Library of Congress if it simply progresses linearly yet to perpetuity? It will be nothing less than boggling.

      So perhaps there is a command in the idealized programming language that looks like this: querylibraryofcongress, or perhaps: askjeeves. Even such commands underestimate the power of infinity. When considering an infinite computer, it's time to reverse engineer. You ask yourself, how would I make a light saber?, not ever living in a world where one exists - that's the kind of reverse engineering going on here. Now, reverse engineer the infinite computer ...

      Here's another command: costzero. I.e., run without costing anything! Somehow it will figure out how to do so. Naturally, a computer of infinite speed would be ensured to be connected sufficiently to the universe in order to obey.

      Here's another command: goaheadmakemyday. The output will make you happier than whatever you can imagine you want.

      --
      Know your pads. One time pad: good for cryptography. Two timing pad: where to take your mistress.
    6. Re:Naming, copyright, and caps by Anonymous Coward · · Score: 0

      Is Star Trek really this in speed or is it in data access? Most of these "answers" to the question seems to only be focusing on RAM and CPU/GPU access. Is not the real bottleneck in any program the speed it can pull in the required data so the program can do what it needs to? Star Trek to me appears to have better read/write speeds of their drives but faster computer speeds maybe for even using the holodeck example there is a pause between Picard stating what he wants and the computer responding ready to enter.

    7. Re: Naming, copyright, and caps by Anonymous Coward · · Score: 0

      We're hypothetically violating the laws of physics and advancing the rate of human knowledge growth factorially, and you're worried about a corporate attack dog?

      You capitalists have strange priorities.

    8. Re: Naming, copyright, and caps by Anonymous Coward · · Score: 0

      Although, as Moriarty found out, no matter how good the program interface is, you still have stay within the construct, otherwise, *poof*, you disappear in a puff of logic.

  53. English, or whatever language you already speak by Anonymous Coward · · Score: 0

    How about a natural language processing neural network compiler that converts human speech into a formal system of program requirements, then synthesizes an optimal program that fulfills said requirements? We already have software that does all the various parts of this, so all we have to do is figure out the infinite speed part.

  54. Bad idea by SuperKendall · · Score: 1

    But if you didn't have to worry about the performance, what would boost the other two?

    From experience, things that would badly impact actual performance on a computer that is not infinitely fast...

    Which is why the question is stupid. This is not how advancements are made, this is how people are lead down false paths with a dead end. Advancements are made by considering the impact of all important factors...

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:Bad idea by ranton · · Score: 3, Informative

      Which is why the question is stupid. This is not how advancements are made, this is how people are lead down false paths with a dead end. Advancements are made by considering the impact of all important factors...

      This line of thinking is foolish. Advancements are made from all kids of approaches. If you want to think innovatively, you should probably be following paths you assume will lead to a dead end. If are aren't failing most of the time, you aren't thinking very innovatively.

      --
      -- All that is necessary for the triumph of evil is that good men do nothing. -- Edmund Burke
    2. Re:Bad idea by Anonymous Coward · · Score: 0

      Which is why the question is stupid. This is not how advancements are made, this is how people are lead down false paths with a dead end. Advancements are made by considering the impact of all important factors...

      That's a good way to get stuck in the present - building things for today rather than researching for tomorrow.

      Maybe crystal-based computing in the 2100s will be able to show us near-infinite performance. Who knows? But there's no point in getting there if we can't hypothesise about potential uses for it now.

      Captcha: Genesis

  55. Infinity/Infinity by pellik · · Score: 2

    So if I screw up and create an infinite loop this computer would complete the loop anyway in only one unit of time?

    1. Re:Infinity/Infinity by lance_of_the_apes · · Score: 1

      Ha ha, I'd mod this up, if I could. Loops would probably have to require some form of exit after N iterations.

    2. Re:Infinity/Infinity by Anonymous Coward · · Score: 0

      So generations of mathematicians couldn't come up with a solution for Infinity/Infinity, and you just found out that the answer is one? How long does it take to execute two nested infinite loops with your machine? Infinity nested infinite loops? &c

  56. Get rid of deadlocks by tomhath · · Score: 1

    Not sure how though.

  57. everything is dynamic by david_bonn · · Score: 1

    All relationships (e.g. inheritance, type) would automatically be dynamic. A framework for doing static typing and inheritance would be provided as part of the runtime.

    Similarly, all components could be naturally and transparently distributed with little or no additional code complexity. That infinite speed could be kept busy making sure there are no race conditions.

    Finally, no control structures in the language itself -- all control structures would be part of the runtime and it should be straightforward (if not easy) to add new ones (think Smalltalk or Ruby).

  58. the question is almost self-defeating by retchdog · · Score: 1

    if computers were literally infinitely fast, you could pretty easily replace most of "coding" with brute-force graph search of the program space. the profession of programming as we know it would be obsolete within a few years; it would remain as a quaint curiosity practiced by philosophical lisp-weenies and hardcore enthusiasts. maybe there would be a niche market for "artisanal programs" or something.

    --
    "They were pure niggers." – Noam Chomsky
    1. Re:the question is almost self-defeating by phantomfive · · Score: 1

      And the halting problem would be solved.

      --
      "First they came for the slanderers and i said nothing."
    2. Re:the question is almost self-defeating by retchdog · · Score: 1

      but, yeah, the languages which emerged afterward would probably be closest to what we'd call declarative.

      --
      "They were pure niggers." – Noam Chomsky
  59. It would not support ... by CaptainDork · · Score: 1

    ... bubble sort.

    --
    It little behooves the best of us to comment on the rest of us.
  60. Logically Inconsistent by Roger+W+Moore · · Score: 1

    If they were 'infinitely fast' it wouldn't matter; you could write everything in interpreted BASIC and it wouldn't matter.

    Oh it's even worse than that. If you have an infinitely fast computer you never need to program it because a simple random number generator can immediately simulate the effect of an infinitely number of monkeys typing on an infinite number of keyboards in no time at all. Not only will this give you every possible program in every possible language in no time but searching for the right one will be easy too - infinite speed is really useful....and as a side effect you will also produce the works of Shakespeare as well as every other author living, dead or yet to be born as well as their translations into every language using whatever symbols you have on your simulated keyboard.

    So even if you ignore whether or not an infinitely fast computer is possible the question itself is logically inconsistent because an infinitely fast computer would not need to be programmed let alone optimized as you pointed out.

    1. Re: Logically Inconsistent by Anonymous Coward · · Score: 0

      But in what kind of language would the random number generator be programmed?

    2. Re:Logically Inconsistent by ewibble · · Score: 1

      The problem would not be generating them but determining which ones are good.

    3. Re:Logically Inconsistent by La+Gris · · Score: 2

      WIth an infinitely fast computer you don't program steps or equations rules to compute the result. Instead, you infinitely fast generate random result sets and program simple broad rules for what is an acceptable result match. Your CPU has infinite branch prediction, so it explores all paths instantly. I really think the poster meant quantum computer programming language. Because Quantum computers are somehow infinitely fast because they can explore all results simultaneously.

      --
      Léa Gris
    4. Re: Logically Inconsistent by Anonymous Coward · · Score: 0

      How would searching them will be easy?
      You will have a billion files called Hamlet by Shakespear but only one containing a legitimate version of Hamlet

    5. Re: Logically Inconsistent by La+Gris · · Score: 1

      How would searching them will be easy?

      You will have a billion files called Hamlet by Shakespear but only one containing a legitimate version of Hamlet

      If you want the legitimate Hamlet by Shakespeare, then define rules of what makes it a legitimate version.

      You will probably need a simple set of point checks, some more complexes (requiring other set of rules) like writing style if you want to include non exact copies into your valid results set.

      You can have a top down approach of solutions (result sets), instead of an incremental approach.

      Lets take a simpler problem as an example:

      You can algorithmically compute the surface of a random shape pool, by taking precise measurements scales, then transform in sub-surfaces equations, then resolve the surface algebraically.

      On a standard computer, you have few alternative algorithms and each one of it will take some time to compute.

      You can take the statistical route (suitable for quantum computing/infinite speed result set exploration): Probe points within a known surface (say the garden where the pool is). Then factor how many probes were outside or inside the pool. After some time, you get a ratio of pool surface = %garden surface.

      With sequential computing, your statistical result gets more precise over time. But is never exact.

      With Quantum computing: You instantaneously probe the whole surface and get an exact result immediately for pool surface = %garden surface. (Top-down approach)

      Sequential programming: You determine and compute complex surface algebra from bottom-up for an hopefully exact result.

      Infinite speed/quantum programming: You define a simple rule of inside or outside surface probe and you get the exact result in no time.

      --
      Léa Gris
  61. Goodbye Threads! by yared0319 · · Score: 1

    If a language was infinitely fast, then any sequence or computation could be executed nearly instantaneously (1 Planck time unit?). That means no more offloading long-running tasks to separate threads, waiting for threads to complete, or even spawning a pool of threads to work in parallel. If a computation is near-instantaneous, then any number of them can be executed and still complete near-instantaneously! Inter-process communication between systems would still exist, but with computations competing near-instantaneously there would be no need to synchronize them. We get to assume that any computation from either system involved in IPC will finish before the next one begins. This will really make life easier. When can I have this new language??

  62. Get rid of the math. by Lumpy · · Score: 1

    10 Program killer app
    20 Make lots of money for me with minimal effort.
    30 goto 10

    Because math is hard.... and paying for education and experience is not good for corporate bottom lines.

    Write a programming language that Middle Managers can use to design our products.

    --
    Do not look at laser with remaining good eye.
  63. You would write nondeterministic algorithms by Anonymous Coward · · Score: 0

    If computers ran infinitely fast, you would simply emulate nondeterministic algorithms, which means that programs would become verifiers of correct outputs of a bounded size, and you would call an enumerator to enumerator thru all valid encodings of the outputs. The best output is selected. Since the computer runs infinitely fast, this works in a reasonable amount of time.

    Would these change how program languages are specified? Probably. Would any of these changes make sense in the real world? Unlikely. You would probably get something like Prolog.

  64. We already know the answer: It's called DMI/DME. by Qbertino · · Score: 1

    If computers would be infinitely fast and thus also have nigh infinite memory and storage (because fractal compression at zero cost - duh) we'd all inmediately be using what is called a Direct Manipulation Interface (DMI) or Direct Manipulation Environment. Squeak comes close to that, but a good DMI would be something like Flash combined with RunRev using Python or something as a PL, including a touchscreen object modeller for contemporary tablets and some other niceties. The difference between programming and runtime environment would basically completely disappear.

    There would be no files anymore, just "Objects" and no starting or stopping of programms, just saved "states" of objects or processes running in and on objects. Again, Squak or RunRev/LiveCode come close to this, but of course are a little flakey to be true contenders for the proposed computing utopia in the GP.

    The best experiences I had actually were with Flash, although flashes timeline stuff always was a step backwards vis-a-vis hypercard, squeak and such. But still ... Need a loading bar? Draw one and apply something like >>bar.width = myFile.loading,percentage Done. Doesn't get any better than that short of the computer reading your mind.

    I would love to have a Python or JS 2018 driven DMI/DME with triple-A 3D and Flash-style 2D vector graphics. Completely FOSS. That would totally rock!

    My 2 eurocents.

    --
    We suffer more in our imagination than in reality. - Seneca
  65. Python + Javascript. by Hognoxious · · Score: 1

    Take Python and Javascript. Make it completely unlike them.

    --
    Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    1. Re:Python + Javascript. by Anonymous Coward · · Score: 0

      Weak troll

    2. Re:Python + Javascript. by Hognoxious · · Score: 1

      I know you are but what am I?

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  66. Brakes by trumpetto · · Score: 1

    The first thing you will need is brakes. Pro: no more endless loops!

  67. Funny.. I was just having a conversation... by vtTom · · Score: 1

    ... with a friend where I was describing what I do for work. I design logic by coding algorithms in Verilog, which gets turned into CMOS circuits by a synthesis tool (effectively a software compiler that turns the programming constructs into CMOS circuits rather than pre-defined instructions for general purpose processor). But this is a very clumsy method of describing even the simplest things. At some point, we concluded, the synthesis tools will get good enough that I will need to merely describe to it at a very high level, perhaps just a spec document, or via a natural language "conversation", and then it takes care of all the ugly details under the hood to implement the idea and turn it the hardware.

  68. We talking syntactic sugar? by elistan · · Score: 1

    I figure the ideal programming language to tell an infinitely fast computer what to do is your natural language. Just have the computer sit in on the meetings between the client and the developer. You'll still need a developer to tell the client that no, they don't want blinking fonts, and help clarify vague and contradictory statements, but then just have the computer build what it heard. With infinite processing power, I am of course assuming that very very good natural language processing is possible.

    1. Re:We talking syntactic sugar? by Anonymous Coward · · Score: 0

      I figure the ideal programming language [ ... ] is your natural language.

      Literate programming? TeX is beautiful but an ugly beast.

  69. oh yeah by david_bonn · · Score: 1

    The language should allow full introspection and reflection as well.

  70. Infinitely fast is not an excuse by Anonymous Coward · · Score: 0

    If the computer is infinitely fast, why do we need an ideal programming language?

    Different people think in different ways. Some tasks are more easily accomplished in one language than another.

    And infinitely fast computer should be the reason we stop creating new flavour of the day languages. Not an excuse to create yet another.

  71. I'll actually answer the question by Teppy · · Score: 1
    I'd like a language that is almost purely functional. Think about how much of programming is spent designing data structures for efficient lookup of intermediate results. If computers were infinitely fast, you would just compute everything from scratch based on the original input.

    For a graphics engine, this would mean taking the art as the artists originally created it and doing all the processing needed to display it, every frame.

    For a web browser, you would re-render starting with the HTML every frame, simply discarding what isn't in the window.

    AI would become easier: For a given problem, iterate through all topologies of neural network up to some constant size, train each one, and see which is the smallest that produces the 100% correct results on the training data set. That's likely to be the correct generalization of the problem.

  72. Computation creates entropy by Crashmarik · · Score: 1

    If you had an infinitely fast computer you'd want to be outside it's lightcone so it doesn't vaporize you and everything around you.

  73. Get rid of memory leaks by Anonymous Coward · · Score: 0

    An infinitely fast computer with memory leaks will make short work of finite memory.
    I am a little concerned with the size of Long Long Long for the infinitely fast computer, too.

  74. ill posed question by kylemonger · · Score: 1

    The question really is ill-posed. Even without infinite storage, infinite computation collapses the polynomial hierarchy. P = NP, P = PH and in fact P = PSPACE. You could fairly quickly boostrap your way to an AI that would let you describe (in natural language!) the actions you wanted the computer to take and have the computer either write the program or perform the actions directly. No clever programming needed during the bootstrapping, just brute force searches in polynomial space will be fast enough given an infinitely fast computer.

  75. First instruction by croux · · Score: 1

    An infinitely fast computer requires PAUSE instruction.

  76. Would not make much difference by gweihir · · Score: 1

    The person that wrote this either never had a course in computability or failed it. The bottom line is that "infinite speed" does not matter in reality, because it turns out to be not the same as "infinite computing power". "Infinite computing power" is provable impossible, it leads directly to a contradiction.

    Basically, you would not get much more than what current compilers are already doing, you would just not have to wait for it.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  77. "If Computers Were Infinitely Fast?" by Anonymous Coward · · Score: 0

    Fantasy Island.

    No such thing as infinite is measurable, and certainly not feasible any time soon. A well written and well optimized program will always be faster than one which is lacking.

    I've been in this game for decades now and the same thing is assumed. "When computers are fast enough..." Well, the faster the computers go, the more interesting problems become solvable more practically. Sorry to say it CS wannabes, you will never have enough computer speed to waste cycles on ignorance.

  78. Infinite vs as fast as you want by subanark · · Score: 1

    At infinite speed a value may arrive at an indefinite state, and you would need a way to inspect this.

  79. Infinitly fast, not infinite memory by modmans2ndcoming · · Score: 1

    Getting rid of garbage collection? Why? There is no performance hit to it. The assumption is not that there is infinite memory.

  80. Already exists though... by Narcocide · · Score: 1

    ANSI C

  81. Read my mind... by Anonymous Coward · · Score: 0

    Do what I want, not what I ask. Include DWIWNWIA and all other features become superfluous.

  82. a black hole by Anonymous Coward · · Score: 0

    I just mined all the bitcoins and cracked all the passwords!

  83. The Infinitely Fast Computer by Anonymous Coward · · Score: 0

    ...optimizes for you.

    Seriously, humanity would be the constraint then, not the computer.

  84. Human by mi · · Score: 1

    "Infinitely fast" means "divine" — the bottleneck becomes not the computer's ability to understand, but the human's ability to express the commands and instructions. Assuming, such omni-powerful computers would still obey me, I'd program them in Ukrainian. Or English... Does not really matter — being infinitely fast, the computer would be able to translate the programs from one language to another instantly.

    Oh, and then, of course, they'd need to humans to program them at all...

    --
    In Soviet Washington the swamp drains you.
  85. Obscure or not obscure? by Presence+Eternal · · Score: 1

    With an infinitely fast computer I could code an apple pie from scratch.

  86. adaptive algorithms: AI by Anonymous Coward · · Score: 0

    Presumably, the question is asking about a future where there is a computation breakthrough where current algorithms take a small percentage of available processing.

    The answer of course is AI.

    But the question does not really make sense.

  87. How do you make it easier and idiot-proof? by Beeftopia · · Score: 2

    The real question being asked here is, "How do you make a programming language easier and more idiot-proof?" Right off the bat, there is just no substitute for ability + experience. You need both (or if not experience, a whole lot of ability).

    Remember, the thing a programming language does is translate human-readable text into processor instructions - one's and zeros.

    How to do that more easily and have the program robustly do exactly what you want? Object oriented is brilliant IMO, for example. Forcing you to make classes (a way to group code), and create complex methods (functions), and just instantiate the object (the mere act of doing so running multiple functions, and being able to call with one line a function that does a whole bunch of stuff.

    First there was assembly, line by line interaction with the processor. Then Basic, then function-oriented programs which groups functionality into functions, then object-oriented programming (grouping functionality into classes and their methods), and object-based programming (e.g. JavaScript - everything is an object, except primitives).

    What is all this leading to? Trying to take the average human's mental concepts and turn them into machine code in an easier and more error-proof fashion.

    Deep stuff for a Slashdot thread. We'd need the likes of Claude Shannon and Bjarne Stroustrup to really bite into this.

    People are still going to need to learn the language of the computer, even if/when it could understand natural language ("I wanna add this list of numbers together, divide it by the number of numbers" versus "I want the average of this list of numbers". "And then I want to display it in a flashing red box.").

    Christ, what a maintenance nightmare. Ease of generation of machine code versus maintainability? "Why was this asshole doing all this bit shifting in this function?"

    Well, hopefully I framed the real question a bit better, got no idea of what the next evolutionary step would be.

    1. Re:How do you make it easier and idiot-proof? by Beeftopia · · Score: 1

      And even the graphical stuff like Scratch and the Lego Mindstorms language, you still gotta understand the actions that the device or the program can do, and then translate the graphical symbols into strings (like physical strings of yarn) of commands which will then make the device/program do what you want.

  88. Just once. by bill.pev · · Score: 1

    You wouldn't have to program an infinitely fast computer, except the one time.

  89. If such existed. by jcochran · · Score: 3, Interesting

    I'd replace a programming language with more of an interview system.

    Basically, you'd tell the computer what problem or task you wish it to do. If it knew how to perform the task, then your job is complete. If it doesn't know, it would ask you to break the problem down into smaller sub tasks. You do so and for each sub task that the computer knows how to solve, it would do so. And for each sub task that it didn't know, it would recursively ask how to solve those sub tasks. As for a library, the computer would remember every task that it had been taught previously.

    There would still be programmers, but their job wouldn't be using any specific language, but instead describing how to solve problems or perform tasks.

    1. Re: If such existed. by Anonymous Coward · · Score: 0

      That is a cool idea!

    2. Re:If such existed. by Anonymous Coward · · Score: 0

      Not that it means anything coming from an AC but I'm working on a language/environment that works that way.

    3. Re:If such existed. by Anonymous Coward · · Score: 0

      I'd replace a programming language with [ ... ]. Basically, you'd tell the computer what problem or task you wish it to do. If it knew how to perform the task, [ ... ]

      Excellent idea. Like a GPS (1957 - alan newell and herbert simon). lack of knowledge => interrupt human at terminal ... I like TMS but why do they ask so many questions ? :) Just having some fun 2nite. And I was just thinking along these lines; nice to know that I'm not alone.

  90. Just Asking... by westlake · · Score: 1

    Not being a programmer I have to ask:

    Does infinite speed imply infinite resources? Does infinite speed imply strong A.I.? Because that is what most of the posters here seem to be saying.

  91. This sounds dangerous by Nartie · · Score: 1

    Back when dinosaurs roamed the earth I took my first theoretical computer science class. The professor drew a Turing machine on the blackboard and said "This is the program that runs forever without producing any output. I'm sure you've all written this program." So what happens if my computer is infinitely fast? One typo and it does an infinite amount of nothing, consuming an infinite amount of power. So if my wiring is good enough I crash the electric grid, and if it isn't my house bursts into flames.

  92. Bogosort everything by Anonymous Coward · · Score: 0

    For many algorithms you would just need to specify the constraints on the output and iterate all possible outputs infinitely quickly and pick the best one. The only sorting algorithm would be bogosort.

    So a declarative language would seem to fit, or something like prolog.

  93. No extra steps by Anonymous Coward · · Score: 0

    1. No compilation or build steps
    2. No debug mode--it's all debug all the time baby
    3. Shared state--my ide knows the state of all users at all times. When a user gets an exception I can just deal with it natively.
    4. Reflective unspecified type safety--if a parameter is used as a date in a function, then only let me pass in dates. But don't make me specify the parameter is a date, I am way too lazy.
    5. Automatically test everything with each keystroke so that when my tests tell me when I'm done writing code.
    6. I would never have any memory management.
    7. I wouldn't have to build my teams code t would just be sitting there on my computer already built. Then again, see number 1.
    8. For the love of god just log things for me
    9. Check in my code for me when the tests pass. No save. Just typing and when test passes, in it goes.
    10. no files. No headers. No libraries. No includes. If I need it, it's there. If I don't need it, it's not there.
    11. Thinking...is copy and paste a good thing? Why do I need to copy and paste? Maybe my infinitely fast computer should be able to insert code for me.
    12. When all my tests pass, a butler is there with a cold brewski on a silver plate.

  94. Brute force the code by Anonymous Coward · · Score: 0

    This problem has previously been posed on stackexchange. You can use this computer to generate the shortest possible code that satisfies a set of unit tests.
    Also, the mere existence of such a computer would prove that P=NP, so that would cause some pretty huge shockwaves even without using the computer at all.

  95. tripped up by "infinitely" by Anonymous Coward · · Score: 0

    People might get tripped up by the word infinitely in the question. I think the point is to ask what features you would want in a language if everyone had much more computing power.

  96. An unstoppable force hits an unmoveable object :) by nichogenius · · Score: 1

    So what happens when my infinitely fast CPU finds an infinite loop?

  97. s/computers/compilers/ by platinummyr · · Score: 1

    I read the title originally as "if compilers were infinitely fast" and it actually made sense as a problem question to answer. When you say "computers are infinitely fast" the question becomes dumb because there are a lot of things you can do if computers are infinitely fast which would be dumb to actually do.

  98. English (or French, or Chinese, or...) by Anonymous Coward · · Score: 0

    "Computer, build a simulation in which early 21st century dreamers respond to this post"

    *Beep Beep* "Specify language"
    "English"

  99. Purely declarative by Anonymous Coward · · Score: 0

    With infinite speed, any problem can be solved in zero time by trying out all possible inputs. So procedural or functional programming becomes obsolete, because stating the problem is enough. Also, no cryptography.

  100. Just a pointer to the first digit of PI... by ihaveamo · · Score: 1

    ...where the ZIP file of your source code is already located. No need to code!

  101. Not going to get good input from this community by Anonymous Coward · · Score: 0

    Slashdot readers have continuously dropped in my estimation of intelligence article by article in the comments they post. By now, when I read comments here I visualize either a teenager working at a startup fueled by energy drinks or a guy in a wife-beater t-shirt banging out comments from home. Either that, or the smarter people left when the new owners took over (I only check back every once in a great while) as most posts are garbage now.

    This is a good intellectual exercise. If we had limitless processor speed (probably by grouping thousands to millions of processors - you could get to the point where your limitation was your ability to think about a problem rather than the processing power you had available), then the limits would be the same limits that big data / data scientists face - how much data can you store, and how much can you receive over the network? Also, many problems are many-dimensional, and our brains are really only good at processing three dimensions.

    Anything that helps with visualization will help think through the problem as that's an area where our brains have a massive amount of processing dedicated. Look to computer vision researchers (OpenCV) for clues on what they've been doing - forums where they meet will talk about other APIs.

    If we could set problem exploration neural networks out to further research areas and report back to us, that would be awesome. What if instead of having a simple spider, you had an agent that could make search queries and build a model of all the connections related to the problem as it went? If you had a bunch of those looking at many different problems related to a question, you could code simulations quickly and get a better picture of how things might work if a change was made.

  102. Just three but your welcome to add more. by Anonymous Coward · · Score: 0

    One attribute of code is that is should enforce the charter and rights and freedoms of the user.
    Second it could not be used for military application by design.
    Third a Hippocratic oath of to do no harm.

  103. Evolution by Tablizer · · Score: 1

    One could use a genetic algorithm to evolve a solution if time were not an issue. However, the hard part may be defining/building a ranking test.

  104. Telepathic by ignavus · · Score: 1

    Judging from the kind of requirements users often give me, a new computer language really needs to be telepathic. It has to know what the user meant - even when the user has no clue themselves.

    It would help if the new computer language could do magic too. That's another user requirement I often get.

    --
    I am anarch of all I survey.
  105. C# is the starting point by Anonymous Coward · · Score: 0

    lol Java and Python BTFO, so far behind they shouldn't even be allowed in the discussion. Only Microsoft ever took the effort of managing scalable complexity, which is why their OS has lasted 25 years and everyone else gets scurred and drags another dead Unix off the shelf. Yeah right, this Unix will be better. Yeah right, this C imitation will be better. Nope. Without CPU cost it's C#'s game to lose for productivity.

  106. To get a TASTE of the feeling: by Tablizer · · Score: 1


    c:\programs\McAfee\Uninstall.exe

  107. Idiots Are Always Better by Anonymous Coward · · Score: 0

    Let's assume we have an infinitely fast computer. You know people will stop caring about Big-O (most already don't care). Plenty of idiots will code non-lazy loops over infinite data structures or make a mistake in recursion* and we'll be back at slow programs which freeze and crash.

    *Tail optimized so we don't run out of memory.

  108. No Loops by physicsphairy · · Score: 1

    Since every calculation will release a finite quantity of energy, an infinite loop would release an infinite quantity of energy consequently destroying the universe. For safety, the programming language should avoid any looping functionality. Or memory allocation. Actually, probably best if there is a one week delay between executing any instruction during which it can be thoroughly analyzed by physicists for possible singularities.

  109. In theory, such machines exist by bsharma · · Score: 1

    Studying them is part of course in "Theory of Computation" taught in Computer Science. https://en.wikipedia.org/wiki/... Interestingly, even with "infinitely" fast machines, there will still be problems that may not be computable. https://en.wikipedia.org/wiki/...

  110. titanfall by bugs2squash · · Score: 1

    I think the #1 feature of the language would be something to slow the computer down a bit, otherwise games will be unplayable.

    --
    Nullius in verba
  111. Python by Anonymous Coward · · Score: 0

    All you ever need.
    Oh ok maybe the occasional JavaScript.

  112. pragmatic suggestions by Anonymous Coward · · Score: 0

    without performance problems, you could simplify several things:

    Programming Language:

    1. no difference between numeric types like int, float, double and replace each with a single high-precision type that is represented as floating-point with 10^x decimals as well as a rational number at the same time

    2. no more conversions between types, as every type can be converted to any other type at the same time (reader/writer -> input/output reader/writer -> buffered -> ... )

    IDEs:

    1. IDEs could compile, build and run all unit-tests after every keystroke

    2. IDE's KI could help to provide suggestions and/or stackoverflow code-snippets for your current needs

    1. Re:pragmatic suggestions by OrangeTide · · Score: 1

      Floats, especially IEEE Singles, have a lot of weird problems. They're a compromise and rather difficult to use correctly. Why not go back to the old fashion computers where numbers are stored as a sequence of 6-bit values representing base-10 digits (extend BCD)? You can perform operations on numbers of any length of "bytes" on these old systems and really the main problem back then was it was freaking slow. If I can have arbitrary precision / bignum that scaled from 1 byte to many bytes and operations were fast then I'd definitely want that as my numeric type in the vast majority of situations. I can interpret it as an integer, fixed point, arbitrary precision or I can use two of them and treat them as a ratio for some rather slick properties for equations.
      No longer would I have to pick some reasonably big maximum size for my loops (usually I use 'int' in C), the bignum can be any size and you can run my code on any size loop as long as you have log n bytes to represent the counter.

      --
      “Common sense is not so common.” — Voltaire
  113. Equally dumb by Chrisq · · Score: 1

    If computers were made of cheese, what would be the ideal relish to eat with them?

    1. Re:Equally dumb by SharpFang · · Score: 1

      R-eLish

      --
      45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
  114. Programming by example by kubajz · · Score: 1
    I wonder if "programming by example" could work for data processing.

    Telling the system: if I input "1,3,7,5,4", I want the output to be "1,3,4,5,7", or just "get me a sorting algorithm". Then the system searches all kinds of known algorithms and picks the one that does this task and is most commonly searched for in a context similar to mine. Then it proceeds by asking me "ok, but what would be your desirable output for '1,2,a'?". I think these days, so much programming actually seems to be recreating things that someone else has already done...

    This might also work for what amounts to the biggest nightmare for me when learning new languages and environments - e.g. in Unity3D, I have this button and I have this variable, but being a complete newbie - when I push this button, how to make it change the variable. What are the correct names, methods, events? Again, can I program this by way of example or natural language search, and have the system take care of things like passing parameters?

    In other words - superfast computers should just allow me to more easily find and connect work done by others (and released as open source, yippee!)

  115. One command. by SharpFang · · Score: 1

    DoWhatIMean.

    --
    45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
  116. Slow by SomeoneFromBelgium · · Score: 1

    So basically, no matter how infinitely fast it is we would find a way to make it slow (network access anyone?)

  117. Maybe this computer already exists.. by Anonymous Coward · · Score: 0

    we just need to find a back door out this virtual reality we call the universe and access the "main frame" directly...

    Neo.. Follow the white rabbit...

  118. Infinity + Infiinity = Infinity by emmjayell · · Score: 1

    Clearly we should first ask for is an IDE running infinitely smart and fast on that infinitely fast computer.

  119. Programming is such a wasteful activity! by eCubeH · · Score: 1

    Programming is such a 20th century concept. Don't you feel like a mere peon, putting so much effort into organizing your thoughts into some framework that someone else has built, of some syntax and structure that someone else has thought of, to get some task of yours done? Irrespective of the complexity of the logic involved, the complexity of the application, the number of interconnected components etc, programming will ultimately be viewed as a plebian activity! I expect when systems are powerful, when the software / hardware combo is advanced sufficiently, you will *not* need to program anything, ever!

  120. PEBKAC? by Anonymous Coward · · Score: 0

    Blaming the language for the shortfalls of the programmer. PEBKAC

    I've never understood that acronym. The only thing between a keyboard and a computer is a cable. So the problem is the cable? Why not just say cable instead of PEBKAC?

    1. Re:PEBKAC? by bws111 · · Score: 1

      Problem Exists Between Keyboard And Chair

  121. Who cares? by Anonymous Coward · · Score: 0

    If your computer is infinitely fast, you could use any programming language or constructs you like, it's going to make no difference.

    You could code in Visual Basic and run it on Vista, and it'd still run as well as an assembly language application running on MS DOS 6.22.

    Infinite performance negates any performance issues entirely. It's kinda the definition of infinite.

  122. I'd write my two favorite programs by ausekilis · · Score: 1

    while(1) {};

    and

    int myfunc(int n) {
        myfunc(n+1);
    }

    When the boss asks "Hows that research going?". I can honestly answer "The system is calculating away." then show him 'top' with processors pegged.

  123. Start with Python... by djohnsto · · Score: 1

    Not really the interpreter, but the language spec. Add the following:
    - Ability to do static typing when needed
    - Add optional dialect to use delimiters instead of whitespace for block and statement scoping that can be enabled and disabled within a file.
    - Add ability to specify uniform and auto-vectorized parameters to functions and have the system auto parallelize, vectorize, dispatch to GPU, ...

    Many of these may exist in other languages, but I haven't spent a lot of time looking. I'm mostly a c++ and Python guy. Groovy seems to have a lot of cool features, too, but I find it hard to learn because of the too-loose syntax rules.

    --
    Dan
  124. What's the point? by Anonymous Coward · · Score: 0

    If we had access to infinite computational speed, there's no point in wasting time designing a new programming language. There's only one program we ever need to write: a program that produces Strong AI. Once you have the ability to search the entire space of all possible programs and test them against all possible input instantly, all you need to do sufficiently specify the parameters of the program you're looking for, and bam, it's done.

    And then once you've written that one program to produce strong AI, you let it do all future tasks that require any thought, not just all future programs we might need.

    Oh, and by the way, we also solved the Halting Problem now (at least for classical computers, our new infinitely fast computers will have their own halting problem which they will be unable to solve.).

  125. Landauer's Principle by Anonymous Coward · · Score: 0

    Well, by the laws of thermodynamics and Landauer's Principle, an infinitely fast computer should be able to give you an infinite amount of energy if you just run:

    while(true)
    { // Make infinite energy here
    }

    Of course, this creates a bit of a security vulnerability, as while you get an infinite amount of energy, there's a bug where that will also destroy the universe - to avoid this, you should probably add in a sleep call somewhere:

    while(true)
    { // Make infinite energy here

      sleep(1); // Be careful not to destroy the universe
    }

    I should send an email out to Epic's security team to warn about that one - and get a note added to the coding standards...

  126. Stupid question by Anonymous Coward · · Score: 0

    This is question is an example of why Slashdot has declined. It is stupid, theoretical and no right answer. Yes, I realize there is debate in the question but, computers have physical limitations. The better question is how to deal with those limitations.

    So, this is the day I stop reading Slashdot. Too many stupid questions.

  127. Stupidest quesion for eternity by Anonymous Coward · · Score: 0

    This question is exactly like "If 0=1, what is the best way to prove P=NP?"

  128. There is a better way by SuperKendall · · Score: 1

    GC is bad for all the reasons stated. Often you cannot just "throw another hundred GB of RAM"(???) at a system. It really does screw with application speed, I personally spent LOT of time tuning Java GC for both client and server applications so unlike your theoretical understanding I have a lot of real world battle scars from GC.

    There is however a way to do memory management that for the most part does not involve the programmer. It's called ARC, and it works spectacularly well - used by Objective-C and Swift.

    It's fully deterministic an imposes no more burden on the programmer than GC does - but at the same time you can for critical parts dictate exactly how memory allocation should work.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:There is a better way by lgw · · Score: 1

      I found that scoped objects were the right answer for the 80% case in the various domains I've worked in. I would love for "clean up when I exit scope" to be the default for object allocation, as it is in C++. But other choices should be declare-able.

      The biggest miss in modern languages though is that "const, non-null" should be the default for all members and parameters. Give me an operator for those rare times when a reference is nullable ('?'), or a value is mutable ('!').

      --
      Socialism: a lie told by totalitarians and believed by fools.
  129. That is Swift by SuperKendall · · Score: 1

    Give me an operator for those rare times when a reference is nullable ('?'), or a value is mutable ('!')

    That's pretty much Swift. You can specify nullable with "?" (which turns out not to be that rare in practice), and it has semantics for mutable/non-mutability.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:That is Swift by lgw · · Score: 1

      which turns out not to be that rare in practice

      Well, that's a bit of a programming style choice, at least for parameters. I've come to prefer different method names almost always instead of nullable parameters (the notable exception being backwards compatibility in formal interfaces) . It's only where I have some more abstract task system, when the parameters are data members in some class anyway, where nullable seems more sane.

      Of course, for data members, that's all about whether null actually represents a valid state in the thing you're modelling.

      --
      Socialism: a lie told by totalitarians and believed by fools.
  130. English by Anonymous Coward · · Score: 0

    It would be a self aware computer, and the answer is... ENGLISH

  131. It would be called LISP by Anonymous Coward · · Score: 0

    And there would be automatic code optimisation to finish small infinite loops in less than 1 millisecond.

  132. ditch sublime by Anonymous Coward · · Score: 0

    If performance is not an issue an IDE can be used. voila!

  133. The Question is Moot by Anonymous Coward · · Score: 0

    I get the car.

    --Reverend Jesse Jackson on SNL

  134. English by Anonymous Coward · · Score: 0

    English

  135. Nonsense by Tool+Man · · Score: 1

    +1

    GC creates more problems than it solves.

    The knowledge/discipline needed to use GC properly isn't less than learning to use reference counting.

    Worse: In a GC language you'll be retyping the exact same boiler plate code over and over gain to workaround the problem. This leads to copy/paste errors, code verbosity that hides other bugs, forgetting to do it, etc.

    GC-enabled languages have *less* boilerplate and verbosity for the most part, because that nuisance housekeeping is handled for you. Unless you're stuck coding in Java perhaps. Many other GC-friendly languages are easy to read, write, understand, and trivially within the "good enough" ballpark for most use.

    I agree that some knowledge is useful in terms of edge cases, profiling and tuning, but that's a bridge you cross when you need to.

    1. Re:Nonsense by Joce640k · · Score: 1

      "Nuisance housekeeping", what's that?

      I don't recall the last time I typed "delete" in C++. It was at least a decade ago, maybe longer.

      (and I write C++ every day, all day long)

      --
      No sig today...
  136. Only one by Anonymous Coward · · Score: 0

    On a system like that, a programming language would only need one statement:

    > Solve_problem;

  137. infinity / infinity = undefined by gauthamg · · Score: 1

    Forget languages, all you need is one single program that takes an input spec and an output spec and brute forces it's way through every possible program until it finds a solution. However, given that this would be an infinitely large search space, it cannot be determined that an infinitely fast computer would search through this in a finite period of time. So an infinitely fast computer might not be as powerful as it sounds.

    On the other hand, an infintely fast computer could perfectly simulate an infinitely fast computer (could perfectly simulate an infinitely fast computer (could perfectly simulate an infintely fast computer .. ))... which would get you infinite geek cred.

    Eclipse would still take minute to load though. No way around that.