November 27, 2013

“In” Parameters Proposal for C# 6.0

I propose a new feature that will make manipulation of value types more efficient, produce more readable code, and encourage greater use of the functional programming style. I disclaim any ownership to this idea. Currently, there are two C# keywords that allow parameters to be passed by reference, “ref” and “out.” I will confine the discussion to “ref” parameters. The “ref” keyword has several disadvantages: For large value type structures, copying by value is wasteful. It may be more more efficient to passed a structure by reference. One such example of a real world data structure is the Matrix3D data... Read more

July 14, 2013

Anders On C# 6.0 at BUILD 2013

Anders Hejlsberg and Charles Torre talked about a future version of C#, version 6.0, at Windows Build 2013. (34:30) Visual Studio 2013 is the minor release version in an annual major/minor release cycle. The version of .NET included in VS 2013 is 4.5.1 which is an in-place upgrade of version 4.5. Major changes are expected for Visual Studio 2014 and .NET 5.0. C# 6.0 will feature an all new C#-based compiler based on Roslyn, which will be released with VS 2014. Roslyn is currently available as a community technology preview, which opens up new compiler services for third parties.... Read more

June 08, 2013

Looking Forward

I have been thinking a lot about the purpose of my blogging and the creation of workflow that will allow me to blog more. There are a few things that I am interested in: C# Development C# Development: .NET and Mono(MonoTouch, MonoDroid, and MonoMac) Open Source Libraries Computer Science Theory Functional Programming Algorithms and Data Structures Advanced Data Structures Computer Science and Mathematics Massive Open Online Course Artificial Intelligence Automated Reasoning Cognitive Sciences Miscellaneous fields such as Computer Vision Software Entrepreneurship as a MicroISV User Interface Design Software Marketing Software Development Technological Trends and Innovations Expertise and Productivity Online Courses... Read more

March 14, 2013

Immutable Collections Critique

Microsoft released a preliminary version of immutable collections with mutable performance. It uses many of the same performance tricks that I used to build functional collections such as supporting freezable binary tree data structures. The algorithm used is similar to AVL trees in that it minimizes the difference in heights of two child trees. Red-black trees are not used probably because the number of rotations will still cause the O(lg(n)) allocations in an immutable setting and these allocations are a function of the height of the whole tree.. However, one major difference is the lack of support for constant equality... Read more

August 26, 2012

Mainstreaming of Functional Programming

I started out on my projects using imperative techniques, but have since rewritten all my code to based on the functional paradigm. It was the only way that I could eliminate the escalating complexity in achieving my ambitious goals. Although the first programming language I was formally taught in a university was Lisp, much of my early programming background was in C++. I used to be an early advocate of object-oriented programming, but I soon noticed its limitation in programming in a more mathematical way, particularly those involving functions or manipulating symbolic expressions algebraically. This meant that translating ideas into... Read more

May 08, 2012

Continuing Education

A large fraction of my time these days is spent viewing online courses. Coursera (featuring courses from Stanford, Berkeley, Michigan, Penn and Princeton) and edX (featuring MIT & Harvard) are spearheading free online access to high-quality top university courses. Udacity, founded by former Stanford professor Sebastien Thrun, is also noteworthy, though the content is not as valuable as the other two. I’ve taken all but one of the Coursera classes. These courses have mostly been computer-science related, though the variety of the subjects taught will soon expand to the humanities and other subjects. For me, the most beneficial part is... Read more

January 26, 2012

Rise of Big Data, Machine Learning and Data Mining

Rise of Big Data, Machine Learning and Data Mining My approach in artificial intelligence have primarily been symbolic, and, in prior posts on AI, I indicated my skepticism on machine learning and other statistical techniques as a valid long-term approach to solving problems. With supervised learning techniques, it was possible to construct a function from inputs to output by learning from data. However, in many cases, particularly neural networks, the function remains a black box in which no model can be extracted out from which one can perform more complicated types of reasoning. This is not entirely true. In reality, neural networks involve a set of matrix calculations, which... Read more

January 25, 2012

Microsoft AI Initiatives

Microsoft AI Initiatives Several computer science classes focus on algorithms. These include classes in data structures, artificial intelligence, computer graphics and numerical computing. Some of these data structures are quite involved and I have felt that they should be incorporated inside system libraries. Many of the classical data structures have in the 1990s become a staple of standard libraries such as the Standard Template Library of C++ and with the frameworks included with the Java and .NET runtimes. However, libraries for numerical computing (manipulating matrices and performing statistics), handling artificial intelligence, or doing computationally geometry have still not found themselves as full-class citizens... Read more

January 23, 2012

Leverage in the Software Business

It’s a great time to be in the software business, because are many levers available to quickly produce products. Open Source. In recent years, open source has become a true phenomenon. One can find libraries for advanced technologies that are competitive with research offerings from the likes of Google and Microsoft. Even Google relies heavily on open source, which may be a key reason it iterates faster than Microsoft, which develops most of its software in-house. For instance, Chrome, itself based on the WebKit open source project, uses over 80 other open-source libraries credited in it About box. From machine... Read more

C# Everywhere

Miguel de Icaza, founder of Xamarin, describes his C# Everywhere strategy for Mono. Earlier this year, there was a question of Mono’s survival, when the project was canceled after the Attachmate acquisition. However, the Mono team reconstituted itself under the umbrella of Xamarin, and have regained the rights to sell MonoTouch and MonoDroid. I have standardized on C# years ago because it offers a cleaner and highly productive cross-platform solution than other languages that I have considered. C# is available for all Windows-based platforms. Mono fills in the gap for the other platforms with MonoMac for Mac OS, MonoTouch for... Read more