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?

193 of 326 comments (clear)

  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 ender8282 · · Score: 1

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

    3. 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
    4. 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.
    5. 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
    6. 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
    7. 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.

    8. 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...

    9. 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
    10. 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});
    11. 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.

    12. 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.
    13. 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.
    14. 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.
    15. 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.
    16. 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
    17. 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.

    18. 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.

    19. 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.
    20. 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
    21. 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
    22. 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
    23. 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.

    24. 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.

    25. 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.

    26. 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
    27. 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".

    28. 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.

    29. 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
    30. 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.
    31. 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...
    32. 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...
    33. Re:I reject the question by synaptik · · Score: 1

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

      --
      HSJ$$*&#^!#+++ATH0
      NO CARRIER
    34. 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.
    35. 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.
    36. 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.

    37. 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**

    38. 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.

    39. 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)
  2. 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 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.

    4. 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.

    5. 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.
    6. 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

    7. 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.
  3. 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 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?
    2. 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.

    3. 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.

    4. 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.

  4. 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.

  5. 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

  6. 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...

  7. 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 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).

    2. 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.

    3. 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.
    4. 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.
    5. 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.

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

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

    7. 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.
    8. 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.

    9. 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.
    10. 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.
  8. 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.

  9. 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!

  10. 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.
  11. 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?
  12. 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 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
  13. 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 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!
  14. 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 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

    2. 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...
    3. 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.

  15. 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.
  16. Re:An ability to stop by glenebob · · Score: 1

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

  17. 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.

  18. 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. . . .
  19. 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.
  20. 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
  21. 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.
  22. 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.

  23. 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.

  24. 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...

  25. 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.

  26. 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. ;)

  27. 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.

  28. 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.

  29. 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

  30. 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 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

    2. 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
    3. Re:Ask this question another way... by Anonymous Coward · · Score: 1

      Pedantic assholes... on slashdot?

    4. 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.

  31. 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.
  32. 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.

  33. 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.
  34. 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
  35. 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.

  36. 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.)

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

    Not sure how though.

  38. 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).

  39. 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!"

  40. 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.
  41. 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
  42. It would not support ... by CaptainDork · · Score: 1

    ... bubble sort.

    --
    It little behooves the best of us to comment on the rest of us.
  43. 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 ewibble · · Score: 1

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

    2. 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
    3. 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
  44. 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.
  45. 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??

  46. 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!
  47. 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.
  48. 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
  49. 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 Hognoxious · · Score: 1

      I know you are but what am I?

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

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

  51. 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.

  52. 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.

  53. oh yeah by david_bonn · · Score: 1

    The language should allow full introspection and reflection as well.

  54. 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.

  55. 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.

  56. 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.

  57. First instruction by croux · · Score: 1

    An infinitely fast computer requires PAUSE instruction.

  58. 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.
  59. 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.

  60. 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.

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

    ANSI C

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

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

  63. 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.

  64. 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.
  65. Obscure or not obscure? by Presence+Eternal · · Score: 1

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

  66. 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.

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

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

  68. 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.

  69. 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.

  70. 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.

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

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

  72. 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.

  73. 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!

  74. 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.

  75. 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.
  76. To get a TASTE of the feeling: by Tablizer · · Score: 1


    c:\programs\McAfee\Uninstall.exe

  77. 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.

  78. 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/...

  79. 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
  80. 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
  81. 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
  82. 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!)

  83. 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.

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

    DoWhatIMean.

    --
    45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
  85. 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?)

  86. 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.

  87. 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!

  88. 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.

  89. 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
  90. Re:PEBKAC? by bws111 · · Score: 1

    Problem Exists Between Keyboard And Chair

  91. 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.
  92. 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.
  93. 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...
  94. 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.

  95. 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.