[ale] Ruby vs C, a non-technical chat
Darrell Golliher
darrell at golliher.net
Thu Aug 6 11:33:20 EDT 2015
I forgot what it’s like to be constrained by the tools available on a system. I’ve been lucky to be in charge of those decisions since, well, since I started in the industry actually. Wow, I have been lucky haven’t I?
I avoided Python for, um, yeah, 15 years before I saw the light. In 2009 I had to pick a principal language for a tech team of 50 with an expectation they’d grow to 100. As much as I enjoyed Perl when it was less than half a dozen of us, I couldn’t convince myself it would be maintainable for such a large team. I liked python for all sorts of reasons including that it’s easy to read, easy to hold to team to engineering standards and seemed like would give me most of what I loved from dynamic languages while also being manageable with for a large team. That pretty much proved out to be true though eventually I saw the warts of a dynamic language — runtime exceptions and general code execution speed caused us some pain.
Those are some of the reasons I like Go so much. It’s duck typing and speed of compilation give me a lot of the joy of the dynamic languages. It’s designed for, among other things, large code bases and large teams. Standardizing the code style with go format (https://golang.org/pkg/go/format/) really makes it easy to read other peoples code.
It also has nice properties for:
* Code execution speed is good
* Compile speed is awesome. I’m told it’s more amazon on large codebases.
* Software distribution is easy. You end up with system binaries as someone else noted earlier. No more hell of shipping something and then trying to do dependency management on a remote system you don’t control.
* It is trivial to cross compile (I do it for MacOS, x86_64, Linux arm (raspberry pi), and Windows.
* The compiler and strong typing helps me avoid runtime exceptions (while duck typing keeps me sane)
* Its standard library has great tools for quickly writing network apps.
* It is object oriented using composition instead of inheritance (this could be highly debated, but I like it)
There is also the idea that it’s build for writing concurrent programs, but I’m still, frankly, getting my head around that so I can’t say it’s (yet) a selling point for me.
I do have at least one frustration with it. I have yet to find a library that lets me write GUI apps with Go. Some have said that the GUI is where inheritance in OOP shines. I’m not sure.
Anyway, this has been fun.. I think I’ll stop now. :-)
Happy hacking,
-Darrell
p.s if any of you have a Sharp Aquos TV with a network stack, you might find one Go program I wrote useful…
https://github.com/golliher/go-sharptv
—http://golliher.net
On Thu, Aug 6, 2015 at 9:21 AM, leam hall <leamhall at gmail.com> wrote:
> On Thu, Aug 6, 2015 at 8:08 AM, Darrell Golliher <darrell at golliher.net> wro
> Leam, you mentioned fun in your criteria. I like that. The most fun
>> I’ve had programming lately has been
>> in Go. pro-tip for googling it is is to use “golang”
>> https://golang.org I’ve done basic, pascal, modular-2, assembly, C,
>> C++, Perl, Python, Javascript and probably a few others I’ve forgotten.
>> Go rocks.
>>
>> I don’t spend a lot of time thinking about it from a career path
>> perspective, but there are some signs it could prove
>> marketable, maybe. Docker is built with it for example. Digital Ocean
>> seems to use it a lot too.
>> Here’s a list of companies.. https://github.com/golang/go/wiki/GoUsers
>>
>> Maybe it’s never be more than a niche language — I can’t predict the
>> future on that one. I hear good things about Rust and with Apple’s Swift
>> being open sourced it has a shot a being generally useful too.
>> Javascript has even gotten more interesting with the rise of the node,
>> express and angular (aka. MEAN stack when you add mongoldb).
>>
>> Anyway.. I digress. I was trying to plug Go. :-)
>>
>> cheers,
>>
>> Darrell
>>
> Hey Darrell,
> A couple years ago I looked at Go. It's touted as a systems programming
> language and since I work on systems, that seemed like a good route to
> take. I even made something nominally useful with it (
> https://github.com/makhidkarun/vargr_names/blob/master/vargr_names.go)
> Some guy named Brian is supposed to be putting out a book on it the end of
> the year (
> http://www.amazon.com/Programming-Language-Addison-Wesley-Professional-Computing/dp/0134190440/ref=sr_1_sc_1?ie=UTF8&qid=1438866668&sr=8-1-spell&keywords=brian+kernigan+go)
> and I've thought about combining the O'Reilly video course with the book as
> a Christmas gi....errr.... winter work project. :)
> The main issue I'm trying to overcome with coding is getting work done at
> work. I've done stuff with a few languages but keep getting pulled back to
> shell or manual because that's what work supports. With Ruby, I can say
> "It's on the machines, so I can use it". Go would be a harder sell unless I
> can find a job at a Docker shop or some place that is producing system
> tools. Given my current coding skills, I see that as unlikely in the short
> term.
> Some of the skills I'm learning now should translate; writing tests, making
> the code handle errors and exceptions. Some are only useful to OO
> languages.
> Still, having fun rates high.
> Leam
> --
> Mind on a Mission <http://leamhall.blogspot.com/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.ale.org/pipermail/ale/attachments/20150806/407050fd/attachment.html>
More information about the Ale
mailing list