Get Advice Icon

Need advice about which tool to choose?Ask the StackShare community!

Grain
Grain

2
8
+ 1
0
Ruby
Ruby

12.6K
7.1K
+ 1
3.8K
Add tool

Grain vs Ruby: What are the differences?

What is Grain? A strongly-typed functional programming language. Grain is a strongly-typed functional programming language built for the modern web. Unlike other languages used on the web today (like TypeScript or Elm), Grain doesn’t compile into JavaScript. Grain complies all the way down to WebAssembly, and is supported by a tiny JavaScript runtime to give Grain access to web features that WebAssembly doesn’t yet support.

What is Ruby? A dynamic, interpreted, open source programming language with a focus on simplicity and productivity. Ruby is a language of careful balance. Its creator, Yukihiro “Matz” Matsumoto, blended parts of his favorite languages (Perl, Smalltalk, Eiffel, Ada, and Lisp) to form a new language that balanced functional programming with imperative programming.

Grain and Ruby can be primarily classified as "Languages" tools.

Grain and Ruby are both open source tools. Ruby with 15.9K GitHub stars and 4.25K forks on GitHub appears to be more popular than Grain with 1.21K GitHub stars and 21 GitHub forks.

What is Grain?

Grain is a strongly-typed functional programming language built for the modern web. Unlike other languages used on the web today (like TypeScript or Elm), Grain doesn’t compile into JavaScript. Grain complies all the way down to WebAssembly, and is supported by a tiny JavaScript runtime to give Grain access to web features that WebAssembly doesn’t yet support.

What is Ruby?

Ruby is a language of careful balance. Its creator, Yukihiro “Matz” Matsumoto, blended parts of his favorite languages (Perl, Smalltalk, Eiffel, Ada, and Lisp) to form a new language that balanced functional programming with imperative programming.
Get Advice Icon

Need advice about which tool to choose?Ask the StackShare community!

Why do developers choose Grain?
Why do developers choose Ruby?
    Be the first to leave a pro

    Sign up to add, upvote and see more prosMake informed product decisions

      Be the first to leave a con

      Sign up to add, upvote and see more consMake informed product decisions

      What companies use Grain?
      What companies use Ruby?
        No companies found

        Sign up to get full access to all the companiesMake informed product decisions

        What tools integrate with Grain?
        What tools integrate with Ruby?
          No integrations found

          Sign up to get full access to all the tool integrationsMake informed product decisions

          What are some alternatives to Grain and Ruby?
          PHP
          Fast, flexible and pragmatic, PHP powers everything from your blog to the most popular websites in the world.
          JavaScript
          JavaScript is most known as the scripting language for Web pages, but used in many non-browser environments as well such as node.js or Apache CouchDB. It is a prototype-based, multi-paradigm scripting language that is dynamic,and supports object-oriented, imperative, and functional programming styles.
          Python
          Python is a general purpose programming language created by Guido Van Rossum. Python is most praised for its elegant syntax and readable code, if you are just beginning your programming career python suits you best.
          Java
          Java is a programming language and computing platform first released by Sun Microsystems in 1995. There are lots of applications and websites that will not work unless you have Java installed, and more are created every day. Java is fast, secure, and reliable. From laptops to datacenters, game consoles to scientific supercomputers, cell phones to the Internet, Java is everywhere!
          HTML5
          HTML5 is a core technology markup language of the Internet used for structuring and presenting content for the World Wide Web. As of October 2014 this is the final and complete fifth revision of the HTML standard of the World Wide Web Consortium (W3C). The previous version, HTML 4, was standardised in 1997.
          See all alternatives
          Decisions about Grain and Ruby
          StackShare Editors
          StackShare Editors
          Angular
          Angular
          jQuery
          jQuery
          Objective-C
          Objective-C
          Swift
          Swift
          Go
          Go
          Ruby
          Ruby
          Java
          Java
          React
          React
          Python
          Python
          Node.js
          Node.js
          Rails
          Rails

          By mid-2015, around the time of the Series E, the Digital department at WeWork had grown to more than 40 people to support the company’s growing product needs.

          By then, they’d migrated the main website off of WordPress to Ruby on Rails, and a combination React, Angular, and jQuery, though there were efforts to move entirely to React for the front-end.

          The backend was structured around a microservices architecture built partially in Node.js, along with a combination of Ruby, Python, Bash, and Go. Swift/Objective-C and Java powered the mobile apps.

          These technologies power the listings on the website, as well as various internal tools, like community manager dashboards as well as RFID hardware for access management.

          See more
          StackShare Editors
          StackShare Editors
          Kotlin
          Kotlin
          gRPC
          gRPC
          Go
          Go
          Ruby
          Ruby

          As the WeWork footprint continued to expand, in mid-2018 the team began to explore the next generation of identity management to handle the global scale of the business.

          The team decided to vet three languages for building microservices: Go, Kotlin, and Ruby. They compared the three by building a component of an identity system in each, and assessing the performance apples-to-apples.

          After building out the systems and load testing each one, the team decided to implement the new system in Go for a few reasons. In addition to better performance under heavy loads, Go, according to the team, is a simpler language that will constrain developers to simpler code. Additionally, the development lifecycle is simpler with Go, since “there is little difference between running a service directly on a dev machine, to running it in a container, to running clustered instances of the service.”

          In the implementation, they the Go grpc framework to handle various common infrastructure patterns, resulting in “in a clean common server pattern that we can reuse across our microservices.”

          See more
          Dima Korolev
          Dima Korolev
          Principal Maintainer at Current · | 3 upvotes · 14.1K views
          atFriendlyDataFriendlyData
          C++
          C++
          Ruby
          Ruby
          #Grammar
          #NLP
          #BNF

          Ruby NLP C++ Grammar #BNF

          At FriendlyData we had a Ruby-based pipeline for natural language processing. Our technology is centered around grammar-based natural language parsing, as well as various product features, and, as the core stack of the company historically is Ruby, the initial version of the pipeline was implemented in Ruby as well.

          As we were entering the exponential growth phase, both technology- and product-wise, we looked into how could we speed up and extend the performance and flexibility of our [meta-]BNF-based parsing engine. Gradually, we built the pieces of the engine in C++.

          Ultimately, the natural language parsing stack spans three universes and three software engineering paradigms: the declarative one, the functional one, and the imperative one. The imperative one was and remains implemented in Ruby, the functional one is implemented in a functional language (this part is under the NDA, while everything I am talking about here is part of the public talks we gave throughout 2017 and 2018), and the declarative part, which can loosely be thought of as being BNF-based, is now served by the C++ engine.

          The C++ engine for the BNF part removed the immediate blockers, gave us 500x+ performance speedup, and enabled us to launch new product features, most notably query completions, suggestions, and spelling corrections.

          See more
          PagerDuty
          PagerDuty
          Slack
          Slack
          Go
          Go
          PHP
          PHP
          Java
          Java
          Python
          Python
          Ruby
          Ruby
          Node.js
          Node.js
          Sqreen
          Sqreen

          I chose Sqreen because it provides an out-of-the-box Security as a Service solution to protect my customer data. I get full visibility over my application security in real-time and I reduce my risk against the most common threats. My customers are happy and I don't need to spend any engineering resources or time on this. We're only alerted when our attention is required and the data that is provided helps engineering teams easily remediate vulnerabilities. The platform grows with us and will allow us to have all the right tools in place when our first security engineer joins the company. Advanced security protections against business logic threats can then be implemented.

          Installation was super easy on my Node.js and Ruby apps. But Sqreen also supports Python , Java , PHP and soon Go .

          It integrates well with the tools I'm using every day Slack , PagerDuty and more.

          See more
          Marc Bollinger
          Marc Bollinger
          Infra & Data Eng Manager at Lumosity · | 4 upvotes · 54.1K views
          atLumosityLumosity
          Pulsar
          Pulsar
          Redis
          Redis
          Heron
          Heron
          Apache Storm
          Apache Storm
          Scala
          Scala
          Kafka
          Kafka
          Ruby
          Ruby
          Node.js
          Node.js

          Lumosity is home to the world's largest cognitive training database, a responsibility we take seriously. For most of the company's history, our analysis of user behavior and training data has been powered by an event stream--first a simple Node.js pub/sub app, then a heavyweight Ruby app with stronger durability. Both supported decent throughput and latency, but they lacked some major features supported by existing open-source alternatives: replaying existing messages (also lacking in most message queue-based solutions), scaling out many different readers for the same stream, the ability to leverage existing solutions for reading and writing, and possibly most importantly: the ability to hire someone externally who already had expertise.

          We ultimately migrated to Kafka in early- to mid-2016, citing both industry trends in companies we'd talked to with similar durability and throughput needs, the extremely strong documentation and community. We pored over Kyle Kingsbury's Jepsen post (https://aphyr.com/posts/293-jepsen-Kafka), as well as Jay Kreps' follow-up (http://blog.empathybox.com/post/62279088548/a-few-notes-on-kafka-and-jepsen), talked at length with Confluent folks and community members, and still wound up running parallel systems for quite a long time, but ultimately, we've been very, very happy. Understanding the internals and proper levers takes some commitment, but it's taken very little maintenance once configured. Since then, the Confluent Platform community has grown and grown; we've gone from doing most development using custom Scala consumers and producers to being 60/40 Kafka Streams/Connects.

          We originally looked into Storm / Heron , and we'd moved on from Redis pub/sub. Heron looks great, but we already had a programming model across services that was more akin to consuming a message consumers than required a topology of bolts, etc. Heron also had just come out while we were starting to migrate things, and the community momentum and direction of Kafka felt more substantial than the older Storm. If we were to start the process over again today, we might check out Pulsar , although the ecosystem is much younger.

          To find out more, read our 2017 engineering blog post about the migration!

          See more
          Yashu Mittal
          Yashu Mittal
          Founder & CEO at CodeCarrot · | 1 upvotes · 7.9K views
          atCodeCarrotCodeCarrot
          Markdown
          Markdown
          Ruby
          Ruby
          Jekyll
          Jekyll

          Jekyll is an open source static site generator (SSG) with a Ruby at its core which transform your plain text into static websites and blogs.

          It is simple means no more databases, comment moderation, or pesky updates to install—just your content. As said earlier SSG uses Markdown, Liquid, HTML & CSS go in and come out ready for deployment. Lastly it's blog-aware permalinks, categories, pages, posts, and custom layouts are all first-class citizens here.

          See more
          Johnny Bell
          Johnny Bell
          Senior Software Engineer at StackShare · | 13 upvotes · 225.8K views
          atStackShareStackShare
          styled-components
          styled-components
          Emotion
          Emotion
          Glamorous
          Glamorous
          Showdown
          Showdown
          Ruby
          Ruby
          GraphQL
          GraphQL
          React
          React
          Markdown
          Markdown
          #StackDecisionsLaunch
          #CssInJs
          #Frontend

          For Stack Decisions I needed to add Markdown in the decision composer to give our users access to some general styling when writing their decisions. We used React & GraphQL on the #Frontend and Ruby & GraphQL on the backend.

          Instead of using Showdown or another tool, We decided to parse the Markdown on the backend so we had more control over what we wanted to render in Markdown because we didn't want to enable all Markdown options, we also wanted to limit any malicious code or images to be embedded into the decisions and Markdown was a fairly large to import into our component so it was going to add a lot of kilobytes that we didn't need.

          We also needed to style how the markdown looked, we are currently using Glamorous so I used that but we are planning to update this to Emotion at some stage as it has a fairly easy upgrade path rather than switching over to styled-components or one of the other cssInJs alternatives.

          Also we used React-Mentions for tagging tools and topics in the decisions. Typing @ will let you tag a tool, and typing # will allow you to tag a topic.

          The Markdown options that we chose to support are tags: a, code, u, b, em, pre, ul, ol, li.

          If there are anymore tags you'd love to see added in the composer leave me a comment below and we will look into adding them.

          #StackDecisionsLaunch

          See more
          Jerome Dalbert
          Jerome Dalbert
          Senior Backend Engineer at StackShare · | 5 upvotes · 11.1K views
          atStackShareStackShare
          Rails
          Rails
          Ruby
          Ruby
          Markdown
          Markdown
          #StackDecisionsLaunch

          I needed to make stack decisions accept a subset of Markdown, similarly to sites like Reddit or Stack Overflow.

          I used the redcarpet Ruby gem for parsing, and Rails' sanitize helper made it very easy to only allow certain tags: links, bold, italics, lists, code blocks, paragraphs.

          Problem solved! #StackDecisionsLaunch

          See more
          Jonathan Pugh
          Jonathan Pugh
          Software Engineer / Project Manager / Technical Architect · | 18 upvotes · 177.4K views
          Pouchdb
          Pouchdb
          CouchDB
          CouchDB
          Font Awesome
          Font Awesome
          CSS 3
          CSS 3
          Apache Cordova
          Apache Cordova
          PhoneGap
          PhoneGap
          HTML5
          HTML5
          Ruby
          Ruby
          Babel
          Babel
          Webpack
          Webpack
          Visual Studio Code
          Visual Studio Code
          Figma
          Figma
          TypeScript
          TypeScript
          JavaScript
          JavaScript
          Framework7
          Framework7
          #Css
          #CSS3
          #SCSS
          #Sass
          #Less
          #Electron
          #HandleBars
          #Template7
          #Sketch
          #GraphQL
          #HTML5
          #GraphCool

          I needed to choose a full stack of tools for cross platform mobile application design & development. After much research and trying different tools, these are what I came up with that work for me today:

          For the client coding I chose Framework7 because of its performance, easy learning curve, and very well designed, beautiful UI widgets. I think it's perfect for solo development or small teams. I didn't like React Native. It felt heavy to me and rigid. Framework7 allows the use of #CSS3, which I think is the best technology to come out of the #WWW movement. No other tech has been able to allow designers and developers to develop such flexible, high performance, customisable user interface elements that are highly responsive and hardware accelerated before. Now #CSS3 includes variables and flexboxes it is truly a powerful language and there is no longer a need for preprocessors such as #SCSS / #Sass / #less. React Native contains a very limited interpretation of #CSS3 which I found very frustrating after using #CSS3 for some years already and knowing its powerful features. The other very nice feature of Framework7 is that you can even build for the browser if you want your app to be available for desktop web browsers. The latest release also includes the ability to build for #Electron so you can have MacOS, Windows and Linux desktop apps. This is not possible with React Native yet.

          Framework7 runs on top of Apache Cordova. Cordova and webviews have been slated as being slow in the past. Having a game developer background I found the tweeks to make it run as smooth as silk. One of those tweeks is to use WKWebView. Another important one was using srcset on images.

          I use #Template7 for the for the templating system which is a no-nonsense mobile-centric #HandleBars style extensible templating system. It's easy to write custom helpers for, is fast and has a small footprint. I'm not forced into a new paradigm or learning some new syntax. It operates with standard JavaScript, HTML5 and CSS 3. It's written by the developer of Framework7 and so dovetails with it as expected.

          I configured TypeScript to work with the latest version of Framework7. I consider TypeScript to be one of the best creations to come out of Microsoft in some time. They must have an amazing team working on it. It's very powerful and flexible. It helps you catch a lot of bugs and also provides code completion in supporting IDEs. So for my IDE I use Visual Studio Code which is a blazingly fast and silky smooth editor that integrates seamlessly with TypeScript for the ultimate type checking setup (both products are produced by Microsoft).

          I use Webpack and Babel to compile the JavaScript. TypeScript can compile to JavaScript directly but Babel offers a few more options and polyfills so you can use the latest (and even prerelease) JavaScript features today and compile to be backwards compatible with virtually any browser. My favorite recent addition is "optional chaining" which greatly simplifies and increases readability of a number of sections of my code dealing with getting and setting data in nested objects.

          I use some Ruby scripts to process images with ImageMagick and pngquant to optimise for size and even auto insert responsive image code into the HTML5. Ruby is the ultimate cross platform scripting language. Even as your scripts become large, Ruby allows you to refactor your code easily and make it Object Oriented if necessary. I find it the quickest and easiest way to maintain certain aspects of my build process.

          For the user interface design and prototyping I use Figma. Figma has an almost identical user interface to #Sketch but has the added advantage of being cross platform (MacOS and Windows). Its real-time collaboration features are outstanding and I use them a often as I work mostly on remote projects. Clients can collaborate in real-time and see changes I make as I make them. The clickable prototyping features in Figma are also very well designed and mean I can send clickable prototypes to clients to try user interface updates as they are made and get immediate feedback. I'm currently also evaluating the latest version of #AdobeXD as an alternative to Figma as it has the very cool auto-animate feature. It doesn't have real-time collaboration yet, but I heard it is proposed for 2019.

          For the UI icons I use Font Awesome Pro. They have the largest selection and best looking icons you can find on the internet with several variations in styles so you can find most of the icons you want for standard projects.

          For the backend I was using the #GraphCool Framework. As I later found out, #GraphQL still has some way to go in order to provide the full power of a mature graph query language so later in my project I ripped out #GraphCool and replaced it with CouchDB and Pouchdb. Primarily so I could provide good offline app support. CouchDB with Pouchdb is very flexible and efficient combination and overcomes some of the restrictions I found in #GraphQL and hence #GraphCool also. The most impressive and important feature of CouchDB is its replication. You can configure it in various ways for backups, fault tolerance, caching or conditional merging of databases. CouchDB and Pouchdb even supports storing, retrieving and serving binary or image data or other mime types. This removes a level of complexity usually present in database implementations where binary or image data is usually referenced through an #HTML5 link. With CouchDB and Pouchdb apps can operate offline and sync later, very efficiently, when the network connection is good.

          I use PhoneGap when testing the app. It auto-reloads your app when its code is changed and you can also install it on Android phones to preview your app instantly. iOS is a bit more tricky cause of Apple's policies so it's not available on the App Store, but you can build it and install it yourself to your device.

          So that's my latest mobile stack. What tools do you use? Have you tried these ones?

          See more
          Amazon ElastiCache
          Amazon ElastiCache
          Amazon Elasticsearch Service
          Amazon Elasticsearch Service
          AWS Elastic Load Balancing (ELB)
          AWS Elastic Load Balancing (ELB)
          Memcached
          Memcached
          Redis
          Redis
          Python
          Python
          AWS Lambda
          AWS Lambda
          Amazon RDS
          Amazon RDS
          Microsoft SQL Server
          Microsoft SQL Server
          MariaDB
          MariaDB
          Amazon RDS for PostgreSQL
          Amazon RDS for PostgreSQL
          Rails
          Rails
          Ruby
          Ruby
          Heroku
          Heroku
          AWS Elastic Beanstalk
          AWS Elastic Beanstalk

          We initially started out with Heroku as our PaaS provider due to a desire to use it by our original developer for our Ruby on Rails application/website at the time. We were finding response times slow, it was painfully slow, sometimes taking 10 seconds to start loading the main page. Moving up to the next "compute" level was going to be very expensive.

          We moved our site over to AWS Elastic Beanstalk , not only did response times on the site practically become instant, our cloud bill for the application was cut in half.

          In database world we are currently using Amazon RDS for PostgreSQL also, we have both MariaDB and Microsoft SQL Server both hosted on Amazon RDS. The plan is to migrate to AWS Aurora Serverless for all 3 of those database systems.

          Additional services we use for our public applications: AWS Lambda, Python, Redis, Memcached, AWS Elastic Load Balancing (ELB), Amazon Elasticsearch Service, Amazon ElastiCache

          See more
          Hampton Catlin
          Hampton Catlin
          VP of Engineering at Rent The Runway · | 6 upvotes · 8.1K views
          atRent the RunwayRent the Runway
          Java
          Java
          Python
          Python
          Ruby
          Ruby

          At our company, and I've noticed a lot of other ones... application developers and dev-ops people tend to use Ruby and our statisticians and data scientists love Python . Like most companies, our stack is kind of split that way. Ruby is used as glue in most of our production systems ( Java being the main backend language), and then all of our data scientists and their various pipelines tend towards Python

          See more
          Interest over time
          Reviews of Grain and Ruby
          Avatar of kfretwell33
          Founder at Pouch
          Review ofRubyRuby

          I taught myself Ruby about a year ago. I had experience with HTML/CSS, MySQL, and a little bit of javascript and python but would consider this my first true programming language I became proficient in (later picked up Swift).

          I started with a CodeAcademy course before working on my first Rails project. The language is easy to read and Rails is an amazing framework. The online community is fantastic, the documentation is amazing, and there is no shortage of Ruby Gems which allows you to quickly "cobble" together a new project.

          How developers use Grain and Ruby
          Avatar of StackShare
          StackShare uses RubyRuby

          Only thing worth noting here is that we saw some major issues with memory swapping on Heroku with Ruby 2.1.2. We weren’t the only ones. So we actually reverted back to 2.0.0. Here’s what happened: reverting. We’re planning to upgrade to 2.1.4 once we’ve had time to test thoroughly.

          Avatar of benyomin
          benyomin uses RubyRuby

          When we are comparing Turing complete languages it's not about what compiles faster or to the cleanest machine code, it's about what the developer can think in and write faster, including the availability of libraries. A couple of times I wrote some ruby scripts for this project. I just like the language best for some things. Love the syntax.

          Avatar of SaberEsPoder
          SaberEsPoder uses RubyRuby

          We are primarily a Ruby shop; our main apps are running on Ruby + Rails, our Slack bot is written in Ruby and our smaller projects are on Sinatra. It makes it really easy for us to re-use code and switch between different projects since they are all on the same language.

          Avatar of Tim Lucas
          Tim Lucas uses RubyRuby

          Because happiness. Testing via RSpec (mostly model and request specs), Factory Girl for fixtures, VCR for testing API responses, timecop, Redcarpet for Markdown rendering, Intercom gem for posting events.

          Avatar of Karma
          Karma uses RubyRuby

          Most of our services are written in Ruby. We started out as a Ruby shop, but we're slowly also moving some stuff to Go. We're using Go more and more these days, actually, including some backend services.

          How much does Grain cost?
          How much does Ruby cost?
          Pricing unavailable
          Pricing unavailable
          News about Grain
          More news