In Part 1 of the series we dove into the very basics of getting an application up and running in CIL. Part 2 covered methods in CIL and how to call and create our own methods. This part of the series is going to cover branching our CIL code. Branching is a very important concept in CIL because it is what allows us to have loops and control over our program flow
The other day I came across an interesting question on StackOverflow asking how to get column names using Excel Interop in .NET and I set out to find the answer. It is a unique question because many people don't care what column (as in letter, so "A","B", "ZZ", etc) their data is in and may dedicate the first row to friendly column headers (as you can't change the defaults in Excel). This is what I came up with:
I was inspired by Replacing strings using regex in .NET question on StackOverflow today and got to thinking if I would be able to do this without Regex. Then I was even more inspired by the comment by djdanlib:
Could I do this in one line?
In part 1 of the series we went over the "Hello World" in CIL. This post will cover creating and calling methods as well as introducing a few more instructions. We will be getting input from the user, an integer, and then adding 10 to it, in a method we create, and then display it on the screen. Let's get started!
This begins part 1 of a many part series on the Common Intermediate Language (formely known as MSIL) which I will refer to as CIL from now on. CIL is the assembly language of the .NET platform and is what all .NET languages ultimately get boiled down to. My reason for doing these tutorials is simple, I want to learn more about CIL and the .NET internals and what better way to do that than blogging and teaching others. Why do I want to learn about .NET internals as well as CIL? I’m creating a programming language that I want to target the .NET framework and I don’t want to be constrained by C#.
Today I saw Tombatron's blog post on Iterating Over A Tuple about ways to iterate over a Tuple. While I must say it is a very bad idea to do this (if you want to store your data in something iterable, then use something other than a Tuple), I found a very interesting challenge in this.
The initial commit of my combinator extension methods is up at github, so please check it out at my github page
My last post was implementing the K combinator in C# as an extension method. Today, I am moving on to the B-Combinator. The B combinator has the form:
B f g x = f(g(x))
After browsing through Programmers.StackExchange I found an interesting post on combinators and how they applied to programming projects. It led me to some interesting links, most notably this post by Reg Braithwaite and saw the Ruby implementation of this as #tag and thought, why not recreate it in C#?
It's been a while since my last post and since then I've started a new job. At this new job I have to use Microsoft SQL Server 2008R2 and work with many different database and tables, which I don't think is uncommon among programmers. While dealing with these tables, some of them with tons of columns (too many to count) I have found the need to see how many columns there are in a specific table since I need to write column specific code for one of the applications. Now, this table had more columns than I wished to count by hand and I was thinking there was a way to do it in SQL and it turns out there is and I'll share it with you now.