[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-sharptvhttp://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