Clojure vs Objective-C

Get Advice Icon

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

Clojure
Clojure

724
548
+ 1
887
Objective-C
Objective-C

4.5K
2.3K
+ 1
490
Add tool

Clojure vs Objective-C: What are the differences?

Clojure: A dynamic programming language that targets the Java Virtual Machine. Clojure is designed to be a general-purpose language, combining the approachability and interactive development of a scripting language with an efficient and robust infrastructure for multithreaded programming. Clojure is a compiled language - it compiles directly to JVM bytecode, yet remains completely dynamic. Clojure is a dialect of Lisp, and shares with Lisp the code-as-data philosophy and a powerful macro system; Objective-C: The primary programming language you use when writing software for OS X and iOS. Objective-C is a superset of the C programming language and provides object-oriented capabilities and a dynamic runtime. Objective-C inherits the syntax, primitive types, and flow control statements of C and adds syntax for defining classes and methods. It also adds language-level support for object graph management and object literals while providing dynamic typing and binding, deferring many responsibilities until runtime.

Clojure and Objective-C can be categorized as "Languages" tools.

"It is a lisp", "Concise syntax" and "Persistent data structures" are the key factors why developers consider Clojure; whereas "Ios", "Xcode" and "Backed by apple" are the primary reasons why Objective-C is favored.

Clojure is an open source tool with 7.85K GitHub stars and 1.25K GitHub forks. Here's a link to Clojure's open source repository on GitHub.

Uber Technologies, Instagram, and Pinterest are some of the popular companies that use Objective-C, whereas Clojure is used by CircleCI, Groupon, and Soundcloud. Objective-C has a broader approval, being mentioned in 851 company stacks & 363 developers stacks; compared to Clojure, which is listed in 95 company stacks and 80 developer stacks.

- No public GitHub repository available -

What is Clojure?

Clojure is designed to be a general-purpose language, combining the approachability and interactive development of a scripting language with an efficient and robust infrastructure for multithreaded programming. Clojure is a compiled language - it compiles directly to JVM bytecode, yet remains completely dynamic. Clojure is a dialect of Lisp, and shares with Lisp the code-as-data philosophy and a powerful macro system.

What is Objective-C?

Objective-C is a superset of the C programming language and provides object-oriented capabilities and a dynamic runtime. Objective-C inherits the syntax, primitive types, and flow control statements of C and adds syntax for defining classes and methods. It also adds language-level support for object graph management and object literals while providing dynamic typing and binding, deferring many responsibilities until runtime.
Get Advice Icon

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

Why do developers choose Clojure?
Why do developers choose Objective-C?

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

    Be the first to leave a con
    What companies use Clojure?
    What companies use Objective-C?

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

    What tools integrate with Clojure?
    What tools integrate with Objective-C?

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

    What are some alternatives to Clojure and Objective-C?
    Scala
    Scala is an acronym for “Scalable Language”. This means that Scala grows with you. You can play with it by typing one-line expressions and observing the results. But you can also rely on it for large mission critical systems, as many companies, including Twitter, LinkedIn, or Intel do. To some, Scala feels like a scripting language. Its syntax is concise and low ceremony; its types get out of the way because the compiler can infer them.
    Haskell
    Common Lisp
    Lisp was originally created as a practical mathematical notation for computer programs, influenced by the notation of Alonzo Church's lambda calculus. It quickly became the favored programming language for artificial intelligence (AI) research. As one of the earliest programming languages, Lisp pioneered many ideas in computer science, including tree data structures, automatic storage management, dynamic typing, conditionals, higher-order functions, recursion, and the self-hosting compiler. [source: wikipedia]
    Elixir
    Elixir leverages the Erlang VM, known for running low-latency, distributed and fault-tolerant systems, while also being successfully used in web development and the embedded software domain.
    Julia
    Julia is a high-level, high-performance dynamic programming language for technical computing, with syntax that is familiar to users of other technical computing environments. It provides a sophisticated compiler, distributed parallel execution, numerical accuracy, and an extensive mathematical function library.
    See all alternatives
    Decisions about Clojure and Objective-C
    StackShare Editors
    StackShare Editors
    Rails
    Rails
    Node.js
    Node.js
    Python
    Python
    React
    React
    Java
    Java
    Ruby
    Ruby
    Go
    Go
    Swift
    Swift
    Objective-C
    Objective-C
    jQuery
    jQuery

    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
    Java
    Java
    Swift
    Swift
    Gradle
    Gradle
    Objective-C
    Objective-C

    At the heart of Uber’s mobile app development are four primary apps: Android rider, Android driver, iOS rider, and iOS driver. Android developers build in Java, iOS in Objective C and Swift. Engineers across both platforms land code into a monolithic code base that ships each week.

    They use some third-party libraries, but often build their own, since “Many open source libraries available are general-purpose, which can create binary bloat. For mobile engineering, every kilobyte matters.”

    On Android, the build system is Gradle. For the UI, Butter Knife binds views and callbacks to fields and methods via annotation processing, and Picasso provides image loading.

    As for iOS, all of the code lives in a monorepo built with Buck. For crash detection, KSCrash reports crashes to the internal reporting framework.

    See more
    Jake Stein
    Jake Stein
    CEO at Stitch · | 13 upvotes · 101.3K views
    atStitchStitch
    Go
    Go
    Amazon RDS
    Amazon RDS
    Amazon S3
    Amazon S3
    Amazon Redshift
    Amazon Redshift
    Amazon EC2
    Amazon EC2
    AWS OpsWorks
    AWS OpsWorks
    Kubernetes
    Kubernetes
    Python
    Python
    JavaScript
    JavaScript
    Clojure
    Clojure

    Stitch is run entirely on AWS. All of our transactional databases are run with Amazon RDS, and we rely on Amazon S3 for data persistence in various stages of our pipeline. Our product integrates with Amazon Redshift as a data destination, and we also use Redshift as an internal data warehouse (powered by Stitch, of course).

    The majority of our services run on stateless Amazon EC2 instances that are managed by AWS OpsWorks. We recently introduced Kubernetes into our infrastructure to run the scheduled jobs that execute Singer code to extract data from various sources. Although we tend to be wary of shiny new toys, Kubernetes has proven to be a good fit for this problem, and its stability, strong community and helpful tooling have made it easy for us to incorporate into our operations.

    While we continue to be happy with Clojure for our internal services, we felt that its relatively narrow adoption could impede Singer's growth. We chose Python both because it is well suited to the task, and it seems to have reached critical mass among data engineers. All that being said, the Singer spec is language agnostic, and integrations and libraries have been developed in JavaScript, Go, and Clojure.

    See more
    Conor Myhrvold
    Conor Myhrvold
    Tech Brand Mgr, Office of CTO at Uber · | 9 upvotes · 486.4K views
    atUber TechnologiesUber Technologies
    RIBs
    RIBs
    Objective-C
    Objective-C
    Swift
    Swift

    Excerpts from how we developed (and subsequently open sourced) Uber's cross-platform mobile architecture framework, RIBs , going from Objective-C to Swift in the process for iOS: https://github.com/uber/RIBs

    Uber’s new application architecture (RIBs) extensively uses protocols to keep its various components decoupled and testable. We used this architecture for the first time in our new rider application and moved our primary language from Objective-C to Swift. Since Swift is a very static language, unit testing became problematic. Dynamic languages have good frameworks to build test mocks, stubs, or stand-ins by dynamically creating or modifying existing concrete classes.

    Needless to say, we were not very excited about the additional complexity of manually writing and maintaining mock implementations for each of our thousands of protocols.

    The information required to generate mock classes already exists in the Swift protocol. For Uber’s use case, we set out to create tooling that would let engineers automatically generate test mocks for any protocol they wanted by simply annotating them.

    The iOS codebase for our rider application alone incorporates around 1,500 of these generated mocks. Without our code generation tool, all of these would have to be written and maintained by hand, which would have made testing much more time-intensive. Auto-generated mocks have contributed a lot to the unit test coverage that we have today.

    We built these code generation tools ourselves for a number of reasons, including that there weren’t many open source tools available at the time we started our effort. Today, there are some great open source tools to generate resource accessors, like SwiftGen. And Sourcery can help you with generic code generation needs:

    https://eng.uber.com/code-generation/ https://eng.uber.com/driver-app-ribs-architecture/

    (GitHub : https://github.com/uber/RIBs )

    See more
    Clojure
    Clojure
    ClojureScript
    ClojureScript
    JavaScript
    JavaScript
    Java
    Java
    C#
    C#

    I adopted Clojure and ClojureScript because:

    • it's 1 language, multiple platforms.
    • Simple syntax.
    • Designed to avoid unwanted side effects and bugs.
    • Immutable data-structures.
    • Compact code, very expressive.
    • Source code is data.
    • It has super-flexible macro.
    • Has metadata.
    • Interoperability with JavaScript, Java and C#.
    See more
    Interest over time
    Reviews of Clojure and Objective-C
    No reviews found
    How developers use Clojure and Objective-C
    Avatar of Instacart
    Instacart uses Objective-CObjective-C

    Basically, the trajectory was we had our iOS app, which started out native, right? It started as a native app, and then we realized you have to go through a review process and it’s slow, and at a very early stage, it made sense for us to make it a wrapped web view. Basically, the app would open, and it would be a web view inside of it that we could iterate on quickly and change very rapidly and not have to wait for app store view process to change it. It wasn’t totally a native experience, but it was as actually a pretty good experience and lasted for a very long time and was up until recently the foundation of our current mobile web experience, which is different from our app situation. So for a long time, basically, our app store iOS Instacart app was a wrapped web view of just our store, a condensed version of our store, which meant that we could add things. We could change sales. We could change the formatting. We could change the UI really fast and not have to worry about the app store review process.

    This all changed about a year ago, I would like to say, at which point it became a totally native app. We felt comfortable enough with the product and all the features that we made it a native experience and made it a fully featured app.

    Avatar of Brandon Adams
    Brandon Adams uses ClojureClojure

    Cloure is a high level language that provides access to both the JVM (for server-side development) and javascript (for client-side development) with largely the same language. This is important to limit context switching and enable code-reuse during fast product cycles. Clojure is ideal for rapid prototyping and has a strong focus on stability, correctness, and concurrency. Tools like Schema and Spec enable well-structured development and high code confidence.

    Avatar of Brian Fults
    Brian Fults uses ClojureClojure

    To complement Java. The REPL lets me interactively exercise Java code. I can write performant and safe libraries in Java, and then use them in Clojure. I also find the data-centric aspect of Clojure (excellent build-in structures, literal syntax for easily creating those structures, functions that act well on abstractions of those structures) good for data processing.

    This fits a sweet spot between Ruby and Java.

    Avatar of BandSquare
    BandSquare uses ClojureClojure

    We use Clojure mostly for its "Minority Report"-like interactive development in situations that require 'semi-automatic programming' (data inspection, admin tasks, API exploration, scrapers, etc.). We have also used Clojure successfully to build some components of our stack very quickly and reliably, in the backend and the frontend.

    Avatar of papaver
    papaver uses ClojureClojure

    just started learning clojure, maybe around two weeks or so. i'm addicted. this is what i want to be working with and learning for the foreseeable future. the elegance of the language is refreshing. the community is really amazing. i've finally found a language that fits my passion for programming.

    Avatar of CloudRepo
    CloudRepo uses ClojureClojure

    Clojure simplifies and reduces the coding efforts involved in creating CloudRepo. The fact that it runs in the JVM gives us access to all the libraries that we could ever need. Our code base is much smaller and easier to reason about than it would have been had we gone with pure Java.

    Avatar of Refractal
    Refractal uses Objective-CObjective-C

    While the majority of our stack is now using Swift, we still love Objective-C in many cases, especially low-level software manipulation, where it's just easier. It doesn't hurt that a lot of iOS/OS X Libraries out there are written in it either.

    Avatar of SmartLogic
    SmartLogic uses Objective-CObjective-C

    We like to go native with iOS development, and Objective-C has been the only game in town until recent introduction of Swift. We're keeping an eye on Swift, but we aren't giving up on the [old way:to do:things]!

    Avatar of DailySMSCollection
    DailySMSCollection uses Objective-CObjective-C
    Avatar of Promethean TV
    Promethean TV uses Objective-CObjective-C

    PrometheanTV provides SDKs for IOS devices including support for the Objective-C language.

    How much does Clojure cost?
    How much does Objective-C cost?
    Pricing unavailable
    Pricing unavailable