I learned programming using GW-BASIC when I was 8 year old so I am quite partial to BASIC. SmallBASIC is quite good for teaching kids about BASIC. Rich scope for creating graphics and it has the turtle graphics primitives from LOGO too.
Except that he has very little power to change the rules, given the EU laws and the single market system. Basically, what he is suggesting is illegal and most likely just posturing for elections.
Having a C# compiler available has nothing to do with it. Any game that runs mods outside of a sandbox is vulnerable to the same security risk. Once you let the code in a mod run on your PC, its game over, C# compiler or no C# compiler.
The iterator based approach of STL works very elegantly for 1 dimensional data structures but fails to generalize cleanly for higher dimensional structures. For example, there is no easily defined way of iterating over a 2d array or a graph. Also, the notion of regular types, discussed in your book Elements of Programming, also fails to generalize for 2 or higher dimensional types, like complex numbers and matrices. They lack the total ordering property.
Of course, you can artificially define an ordering, say force a row-by-row iteration over a 2D-Array or a breadth-first iterator over a tree or an artificial ordering on complex numbers, but such constructs feel artificial. Do you think this limitation is fundamental to the iterator based design approach?
As we all know, C++ is far from perfect. There are several features which you discuss in your books and papers, like concepts and UNDERLYING_TYPE, which C++ is currently missing but proposed for C++17 (e.g. destructive move). However there are things you have criticized before, like the memory allocation interface, which are still as they were 25 years back.
What do you dislike the most about C++? What would you change or add to the language to make it better?
In you book "Elements of Programming", you spend a lot of time on concepts. The paper "A Concept Design for the STL", the basis of the latest concept design for C++, references your book extensively. You of course co-authored that paper. I am therefore quite keen to hear your views on C++ Concepts.
Do you think that language support for concepts (or equivalent constructs like Haskell typeclasses) is important for writing generic code? How deeply are you involved in the effort to get concepts into the C++ standard?
STL has been wildly successful and has pretty much completely changed the way libraries are designed not just in C++ but also in in other languages. Most mainstream languages have added facilities to write generic code.
When designing and proposing STL for inclusion into the standard, did you expect it to be this successful? Why do you think it has been this successful?
STL was a pretty radical departure from the way classes and libraries were designed pre-STL. I am very keen to know a bit about the history of STL’s inclusion into the standard.
When you originally proposed STL for adoption into the C ++ standard, how receptive / enthusiastic was the C++ committee towards STL? What design decisions / compromises did you have to make to get it accepted? How much resistance did you face?
For example, you have noted that it took a major effort to convince the committee that vector must be contiguous. Was such instances common?
STL is actually object-based, rather than object oriented. STL uses classes for encapsulation, but doesn't really use inheritance, and and definitely doesn't use virtual functions, which is what classically means object-oriented. Whatever inheritance is used are more for refinement of concepts rather than object oriented programming.
There is absolutely no difference between an interface and an abstract class with all virtual functions, no default implementations and no data members. Multiple inheritance is strictly a superset of interface inheritance.
Besides, unless you need to store the base class pointer in an array, you will in most cases be better off using templates instead of inheritance anyways:)
The best way MS can increase the number of apps available on their platform is to allow Sideloading. Right now the biggest problem for a hobbyist developer is not the lack of dev tools (VS is one of the best dev platforms), but the fact that I cannot run an app I make on my phone without paying MS an annual fee.
Allow hobbyists to write and run apps on their phones, and they might create something which they feel can be sold on the app store, at which point you can start charging them for a dev license. But not many hobbyists will pay upfront to tinker with their phones which they already own.
Basically, make it easy for people to run apps on Windows phone, and you will automatically increase the number of available apps.
I am actually glad the Surface RT failed. I also wish the Windows Phone to fail, even though I own a Lumia and find it much better than similarly priced Android phones. I hate that I cannot write or run my own programs on a machine I own without paying MS 100 USD per year. That's beyond stupid.
MS has probably the best dev tools in the industry; they even give it away for free. But if you want to actually run the program you wrote using these tools, you have to pay. What's the logic in that ?!
I actually like the hardware, both RT and the Lumia. I just hate the walled garden crap. Let us write code for our own machines and you will definitely make a lot more sells.
Besides, anybody who is okay with a walled garden already owns an iPad.
Opera is the best browser out there. I don't trust Chrome not to report data about me to Google, and if Facebook buys Opera I wouldn't trust it not to report my browsing data to Facebook. I will have to move back to the mess that is Firefox
Assume this year there is a stock market bubble, and I pay a huge tax this year. Next year there is a stock market crash, and I lose all my previous years gain. So what happens ? Government refunds me my tax ? What about interest on that tax ? Government pays it too ?
Next problem, how do I pay this tax ? If my money is tied up in investments, how do I generate the cash to pay my tax ? Should we start paying our taxes using equity shares ?
Re:haskell for the masses? sure, but only...
on
OCaml For the Masses
·
· Score: 1
Modern imperative languages are constantly adding elements from functional languages. For example, take C++ templates - template metaprogramming is a pure functional style of programming. C++ 1x has added lambdas. Also things like STL algorithms such as accumulate and for_each or boost::bind - are essentially functional programming. C++ 1x was to have concepts which was removed but will hopefully return in the next standard. C# has added async and await. So your "masses" cannot avoid functional programming - they will be forced to learn it - since all imperative languages are going in that direction.
The advent of multicore programming will force this issue. Functional programs are much easier to execute in parallel. C++ has Microsoft PPL or Intel Threads libraries which are essentially functional algorithms. parallel_for with a lambda is one of the most useful parallel programming techniques. The equivalent imperative program will be far more verbose and cumbersome.
I actually believe C++ with the addition of Concepts and pure functions will make a very useful functional language. Yes it will be much more verbose than Haskell. Everything is. But then we will be able to use imperative style where required and functional style everywhere else. The functional parts can be easily parallelized. They can throw exceptions with impunity. Of course, there are some issues as to what constitutes "pure objects" and how to work around C++'s lack of a garbage collector. However people are already working on it. I believe Andrei Alexandrescu was working on something similar for D, which may be adopted to C++.
F# is essentially OCaml for.Net, so you get the full access to the.Net library. Also the best thing about F#, in my opinion, is since it is a.Net language, you can mix and match it with C#. So you can use functional approach for most part of your program, yet drop to C# when you require.
Both his criticisms make no sense. Regarding his first (remaining 50% of the bar is taken up by buttons that nobody will ever use) - the space is already there. Do you want to use the space to put some useful commands, or do you leave it blank ? Obviously my choice would be to add some useful command. Empty space serves nothing.
The second criticism is even more nonsense. MS is not taking away the context menu or the hotkey - in fact if you read the blog, they are adding more shortcuts. They are only combining the command bar and menu bar into one and making it more prominent. Whats the harm in that ? It even has more vertical space!
KOTOR I and II were 2 of the best RPGs I have played. True that KOTOR 2's ending was botched up, but then it wasn't released by Bioware. I am really excited about this game - I haven't found a really good RPG recently after Witcher. Mass Effect and Dragon Age wasn't that good in my opinion.
The summary is slightly incorrect. What the OP is complaining about is actually the DPI, not pixels per se. He wants more pixels on a screen of given size, not larger screens. Its a position I completely agree with. Most LCD screens are only 96 dpi. Compare that to a Kindle screen at 170 dpi. Guess which one is easier on the eyes ?
Imagine a 22 inch screen with the resolution of a 30 inch display. In a OS like Win 7, just increase the DPI setting, and your text will be the same size as a 96 DPI screen, but far crisper. Sharper text, sharper pictures, less eye-strain.
Both the article and the summary mixes up the concepts. Randomness and bias are related but different things. Think of a biased coin loaded in favor of heads - the heads may appear twice as often as the tails, but the distribution is still random. Here too, contrary to the summary's claim of "far from random", the results are random, just biased, and biased against IE, if I may add, which is an important fact the summary omitted.
Some parts were fun, I admit, but mostly the levels were extremely repetitive. I especially remember the Library level - where you had to do the same thing over and over - move through hall after hall which looks exactly the same and enemies which behave the same - I have never felt so bored by an FPS.
We all know the supply and demand thing, but the question the author asks is, games don't inherently have a value, so how does the market determine its price to be $60 ? That is, why isn't the market clearing price not $30 or $90 ?
In addition to the points the author mentions, another explanation is in the phenomenon of anchoring. Humans inherently do not know the value of any good, so the first price they see for a product stays in their mind and they compare all prices for that product off that anchor. We have grown used to seeing $60 as price for games - it has become an anchor - so all new games are priced at that.
A brilliant example of anchoring is given in the book "Predictably Irrational" by Dan Ariely. He gives an example of Tahitian black pearls. When they were discovered all pearls used to be white, so black pearls had no market and no value. But a very clever marketing campaign was launched to *anchor* the black pearls with very expensive jewellery, and hence there value became very high.
Economics assumes that people are rational. However, people are often irrational. There is a subject called behavioural economics which studies irrational behaviour of people and the limits of normal economics.
I learned programming using GW-BASIC when I was 8 year old so I am quite partial to BASIC. SmallBASIC is quite good for teaching kids about BASIC. Rich scope for creating graphics and it has the turtle graphics primitives from LOGO too.
Use elastic tabstops and get done with with. There is a plug-in for it in Visual Studio which I use.
Except that he has very little power to change the rules, given the EU laws and the single market system. Basically, what he is suggesting is illegal and most likely just posturing for elections.
Having a C# compiler available has nothing to do with it. Any game that runs mods outside of a sandbox is vulnerable to the same security risk. Once you let the code in a mod run on your PC, its game over, C# compiler or no C# compiler.
The iterator based approach of STL works very elegantly for 1 dimensional data structures but fails to generalize cleanly for higher dimensional structures. For example, there is no easily defined way of iterating over a 2d array or a graph. Also, the notion of regular types, discussed in your book Elements of Programming, also fails to generalize for 2 or higher dimensional types, like complex numbers and matrices. They lack the total ordering property.
Of course, you can artificially define an ordering, say force a row-by-row iteration over a 2D-Array or a breadth-first iterator over a tree or an artificial ordering on complex numbers, but such constructs feel artificial. Do you think this limitation is fundamental to the iterator based design approach?
As we all know, C++ is far from perfect. There are several features which you discuss in your books and papers, like concepts and UNDERLYING_TYPE, which C++ is currently missing but proposed for C++17 (e.g. destructive move). However there are things you have criticized before, like the memory allocation interface, which are still as they were 25 years back.
What do you dislike the most about C++? What would you change or add to the language to make it better?
In you book "Elements of Programming", you spend a lot of time on concepts. The paper "A Concept Design for the STL", the basis of the latest concept design for C++, references your book extensively. You of course co-authored that paper. I am therefore quite keen to hear your views on C++ Concepts.
Do you think that language support for concepts (or equivalent constructs like Haskell typeclasses) is important for writing generic code? How deeply are you involved in the effort to get concepts into the C++ standard?
STL has been wildly successful and has pretty much completely changed the way libraries are designed not just in C++ but also in in other languages. Most mainstream languages have added facilities to write generic code.
When designing and proposing STL for inclusion into the standard, did you expect it to be this successful? Why do you think it has been this successful?
STL was a pretty radical departure from the way classes and libraries were designed pre-STL. I am very keen to know a bit about the history of STL’s inclusion into the standard.
When you originally proposed STL for adoption into the C ++ standard, how receptive / enthusiastic was the C++ committee towards STL? What design decisions / compromises did you have to make to get it accepted? How much resistance did you face?
For example, you have noted that it took a major effort to convince the committee that vector must be contiguous. Was such instances common?
STL is actually object-based, rather than object oriented. STL uses classes for encapsulation, but doesn't really use inheritance, and and definitely doesn't use virtual functions, which is what classically means object-oriented. Whatever inheritance is used are more for refinement of concepts rather than object oriented programming.
There is absolutely no difference between an interface and an abstract class with all virtual functions, no default implementations and no data members. Multiple inheritance is strictly a superset of interface inheritance.
Besides, unless you need to store the base class pointer in an array, you will in most cases be better off using templates instead of inheritance anyways :)
The best way MS can increase the number of apps available on their platform is to allow Sideloading. Right now the biggest problem for a hobbyist developer is not the lack of dev tools (VS is one of the best dev platforms), but the fact that I cannot run an app I make on my phone without paying MS an annual fee.
Allow hobbyists to write and run apps on their phones, and they might create something which they feel can be sold on the app store, at which point you can start charging them for a dev license. But not many hobbyists will pay upfront to tinker with their phones which they already own.
Basically, make it easy for people to run apps on Windows phone, and you will automatically increase the number of available apps.
I am actually glad the Surface RT failed. I also wish the Windows Phone to fail, even though I own a Lumia and find it much better than similarly priced Android phones. I hate that I cannot write or run my own programs on a machine I own without paying MS 100 USD per year. That's beyond stupid.
MS has probably the best dev tools in the industry; they even give it away for free. But if you want to actually run the program you wrote using these tools, you have to pay. What's the logic in that ?!
I actually like the hardware, both RT and the Lumia. I just hate the walled garden crap. Let us write code for our own machines and you will definitely make a lot more sells.
Besides, anybody who is okay with a walled garden already owns an iPad.
Opera is the best browser out there. I don't trust Chrome not to report data about me to Google, and if Facebook buys Opera I wouldn't trust it not to report my browsing data to Facebook. I will have to move back to the mess that is Firefox
Tried it just now, both sites works perfectly fine. Probably a problem with the ISP.
Assume this year there is a stock market bubble, and I pay a huge tax this year. Next year there is a stock market crash, and I lose all my previous years gain. So what happens ? Government refunds me my tax ? What about interest on that tax ? Government pays it too ?
Next problem, how do I pay this tax ? If my money is tied up in investments, how do I generate the cash to pay my tax ? Should we start paying our taxes using equity shares ?
Modern imperative languages are constantly adding elements from functional languages. For example, take C++ templates - template metaprogramming is a pure functional style of programming. C++ 1x has added lambdas. Also things like STL algorithms such as accumulate and for_each or boost::bind - are essentially functional programming. C++ 1x was to have concepts which was removed but will hopefully return in the next standard. C# has added async and await. So your "masses" cannot avoid functional programming - they will be forced to learn it - since all imperative languages are going in that direction.
The advent of multicore programming will force this issue. Functional programs are much easier to execute in parallel. C++ has Microsoft PPL or Intel Threads libraries which are essentially functional algorithms. parallel_for with a lambda is one of the most useful parallel programming techniques. The equivalent imperative program will be far more verbose and cumbersome.
I actually believe C++ with the addition of Concepts and pure functions will make a very useful functional language. Yes it will be much more verbose than Haskell. Everything is. But then we will be able to use imperative style where required and functional style everywhere else. The functional parts can be easily parallelized. They can throw exceptions with impunity. Of course, there are some issues as to what constitutes "pure objects" and how to work around C++'s lack of a garbage collector. However people are already working on it. I believe Andrei Alexandrescu was working on something similar for D, which may be adopted to C++.
F# is essentially OCaml for .Net, so you get the full access to the .Net library. Also the best thing about F#, in my opinion, is since it is a .Net language, you can mix and match it with C#. So you can use functional approach for most part of your program, yet drop to C# when you require.
Both his criticisms make no sense. Regarding his first (remaining 50% of the bar is taken up by buttons that nobody will ever use) - the space is already there. Do you want to use the space to put some useful commands, or do you leave it blank ? Obviously my choice would be to add some useful command. Empty space serves nothing.
The second criticism is even more nonsense. MS is not taking away the context menu or the hotkey - in fact if you read the blog, they are adding more shortcuts. They are only combining the command bar and menu bar into one and making it more prominent. Whats the harm in that ? It even has more vertical space!
KOTOR I and II were 2 of the best RPGs I have played. True that KOTOR 2's ending was botched up, but then it wasn't released by Bioware. I am really excited about this game - I haven't found a really good RPG recently after Witcher. Mass Effect and Dragon Age wasn't that good in my opinion.
Instead of increasing the font size, why don't you just increase your DPI setting ?
The summary is slightly incorrect. What the OP is complaining about is actually the DPI, not pixels per se. He wants more pixels on a screen of given size, not larger screens. Its a position I completely agree with. Most LCD screens are only 96 dpi. Compare that to a Kindle screen at 170 dpi. Guess which one is easier on the eyes ?
Imagine a 22 inch screen with the resolution of a 30 inch display. In a OS like Win 7, just increase the DPI setting, and your text will be the same size as a 96 DPI screen, but far crisper. Sharper text, sharper pictures, less eye-strain.
Both the article and the summary mixes up the concepts. Randomness and bias are related but different things. Think of a biased coin loaded in favor of heads - the heads may appear twice as often as the tails, but the distribution is still random. Here too, contrary to the summary's claim of "far from random", the results are random, just biased, and biased against IE, if I may add, which is an important fact the summary omitted.
Some parts were fun, I admit, but mostly the levels were extremely repetitive. I especially remember the Library level - where you had to do the same thing over and over - move through hall after hall which looks exactly the same and enemies which behave the same - I have never felt so bored by an FPS.
We all know the supply and demand thing, but the question the author asks is, games don't inherently have a value, so how does the market determine its price to be $60 ? That is, why isn't the market clearing price not $30 or $90 ?
In addition to the points the author mentions, another explanation is in the phenomenon of anchoring. Humans inherently do not know the value of any good, so the first price they see for a product stays in their mind and they compare all prices for that product off that anchor. We have grown used to seeing $60 as price for games - it has become an anchor - so all new games are priced at that.
A brilliant example of anchoring is given in the book "Predictably Irrational" by Dan Ariely. He gives an example of Tahitian black pearls. When they were discovered all pearls used to be white, so black pearls had no market and no value. But a very clever marketing campaign was launched to *anchor* the black pearls with very expensive jewellery, and hence there value became very high.
Economics assumes that people are rational. However, people are often irrational. There is a subject called behavioural economics which studies irrational behaviour of people and the limits of normal economics.