# programming-languages

Published articles for programming-languages.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Swift 6.4 unifies building across Linux, macOS, Windows

DevFeed: [Swift 6.4 unifies building across Linux, macOS, Windows](<https://devfeed.tech/articles/swift-6-4-unifies-building-across-linux-macos-windows-41309.md>)

Original publisher: [Read original article](<https://www.theregister.com/devops/2026/09/17/swift-64-unifies-building-across-linux-macos-windows/5297006>)

Author: Joab Jackson

Published: 2026-09-17T04:27:00Z

Content type: article

Language: en

Sources: [www.theregister.com - Articles](<https://devfeed.tech/sources/www-theregister-com-articles.md>)

Topics: [Swift](<https://devfeed.tech/topics/swift.md>), [swift-package-manager](<https://devfeed.tech/topics/swift-package-manager.md>), [Development](<https://devfeed.tech/topics/development.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [macOS](<https://devfeed.tech/topics/macos.md>), [Windows](<https://devfeed.tech/topics/windows.md>)

Tags: [build](<https://devfeed.tech/tags/build.md>), [cross-platform-development](<https://devfeed.tech/tags/cross-platform-development.md>), [devops](<https://devfeed.tech/tags/devops.md>), [linux](<https://devfeed.tech/tags/linux.md>), [macos](<https://devfeed.tech/tags/macos.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [programming-languages](<https://devfeed.tech/tags/programming-languages.md>), [swift](<https://devfeed.tech/tags/swift.md>), [swift-6-4](<https://devfeed.tech/tags/swift-6-4.md>), [swift-package-manager](<https://devfeed.tech/tags/swift-package-manager.md>), [windows](<https://devfeed.tech/tags/windows.md>)

### AI overview

Swift 6.4 makes Swift Build the default engine for the Swift Package Manager, with building unified across Linux, macOS, and Windows.

### Source excerpt

Swift Build is now the default engine for the Swift Package Manager

## Go 1.27 will make some allocations cheaper

DevFeed: [Go 1.27 will make some allocations cheaper](<https://devfeed.tech/articles/go-1-27-will-make-some-allocations-cheaper-29422.md>)

Original publisher: [Read original article](<https://lemire.me/blog/2026/08/15/go-1-27-will-make-some-allocations-cheaper/>)

Author: Daniel Lemire

Published: 2026-08-15T20:59:19Z

Content type: article

Language: en

Sources: [Daniel Lemire](<https://devfeed.tech/sources/daniel-lemire.md>)

Topics: [Go Language](<https://devfeed.tech/topics/go-language.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>)

Tags: [compiler](<https://devfeed.tech/tags/compiler.md>), [data-structure](<https://devfeed.tech/tags/data-structure.md>), [go](<https://devfeed.tech/tags/go.md>), [memory-management](<https://devfeed.tech/tags/memory-management.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-languages](<https://devfeed.tech/tags/programming-languages.md>)

### AI overview

The article explains Go's stack and heap allocations, including how escaping values, slices, and dynamic data structures can cause heap allocations. It notes that Go 1.27 is intended to make some heap allocations cheaper, while the supplied excerpt does not specify the implementation details.

### Source excerpt

Like most programming languages, Go has both stack allocations, whose lifetime is limited to the current function, and dynamic (or heap) allocations. The name stack comes from the fact that the memory management is somewhat trivial. There is typically one stack per thread (or goroutine in Go). When a function needs memory, it simply appends ... Continue reading Go 1.27 will make some allocations cheaper

## Java vs. JavaScript: What's the Difference? (They're Not the Same Thing)

DevFeed: [Java vs. JavaScript: What's the Difference? (They're Not the Same Thing)](<https://devfeed.tech/articles/java-vs-javascript-what-s-the-difference-they-re-not-the-same-thing-23034.md>)

Original publisher: [Read original article](<https://blog.teamtreehouse.com/java-vs-javascript-difference>)

Author: Dev Support

Published: 2026-08-13T17:48:00Z

Content type: tutorial

Language: en

Sources: [Treehouse Blog](<https://devfeed.tech/sources/treehouse-blog.md>)

Topics: [Java](<https://devfeed.tech/topics/java.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [coding](<https://devfeed.tech/topics/coding.md>)

Tags: [coding](<https://devfeed.tech/tags/coding.md>), [java](<https://devfeed.tech/tags/java.md>), [java-vs-javascript](<https://devfeed.tech/tags/java-vs-javascript.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [learn](<https://devfeed.tech/tags/learn.md>), [learn-programming](<https://devfeed.tech/tags/learn-programming.md>), [llearn-to-code](<https://devfeed.tech/tags/llearn-to-code.md>), [programming-languages](<https://devfeed.tech/tags/programming-languages.md>)

### AI overview

This tutorial explains that Java and JavaScript are separate programming languages with different creators, syntax, use cases, and execution models. It also discusses their naming history and contrasts Java's compilation and static typing with JavaScript's runtime interpretation or JIT compilation and dynamic typing.

### Source excerpt

If you've ever typed "is Java the same as JavaScript" into a search bar, you're in good company. It's one of the most common questions in coding, and the confusion is completely understandable -- the names are nearly identical, both... The post Java vs. JavaScript: What's the Difference? (They're Not the Same Thing) appeared first on Treehouse Blog.

## Creator of Lua: Scripting, Programming Languages, Predictions | Roberto Ierusalimschy

DevFeed: [Creator of Lua: Scripting, Programming Languages, Predictions | Roberto Ierusalimschy](<https://devfeed.tech/articles/creator-of-lua-scripting-programming-languages-predictions-roberto-ierusalimschy-18087.md>)

Original publisher: [Read original article](<https://www.developing.dev/p/creator-of-lua-scripting-programming>)

Author: Ryan Peterman

Published: 2026-08-03T13:05:15Z

Content type: article

Language: en

Sources: [The Developing Dev](<https://devfeed.tech/sources/the-developing-dev.md>)

Topics: [Lua](<https://devfeed.tech/topics/lua.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Scripting](<https://devfeed.tech/topics/scripting.md>), [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [C](<https://devfeed.tech/topics/c.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [c](<https://devfeed.tech/tags/c.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [lua](<https://devfeed.tech/tags/lua.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-languages](<https://devfeed.tech/tags/programming-languages.md>), [python](<https://devfeed.tech/tags/python.md>), [scripting](<https://devfeed.tech/tags/scripting.md>)

### AI overview

A conversation with Lua creator Roberto Ierusalimschy explains how Lua works as an embeddable scripting language alongside C or C++, including how applications can call Lua or Lua can call C. The discussion also covers Lua's use in games such as World of Warcraft and Roblox and recommendations for learning other programming languages.

### Source excerpt

When I worked at Instagram, most of the codebase was in Python but occasionally I'd see these bindings into C++.

## On programming languages, targets, and platforms

DevFeed: [On programming languages, targets, and platforms](<https://devfeed.tech/articles/on-programming-languages-targets-and-platforms-18923.md>)

Original publisher: [Read original article](<https://blog.frankel.ch/programming-languages-targets-platforms/>)

Author: Nicolas Fränkel

Published: 2026-06-21T00:00:00Z

Content type: opinion

Language: en

Sources: [Nicolas Fränkel](<https://devfeed.tech/sources/nicolas-frankel.md>)

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [Programming language](<https://devfeed.tech/topics/programming-language.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Scala](<https://devfeed.tech/topics/scala.md>), [Java](<https://devfeed.tech/topics/java.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>)

Tags: [developer](<https://devfeed.tech/tags/developer.md>), [development](<https://devfeed.tech/tags/development.md>), [java](<https://devfeed.tech/tags/java.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [languages](<https://devfeed.tech/tags/languages.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-languages](<https://devfeed.tech/tags/programming-languages.md>), [python](<https://devfeed.tech/tags/python.md>), [rust](<https://devfeed.tech/tags/rust.md>), [scala](<https://devfeed.tech/tags/scala.md>)

### AI overview

A personal discussion of how programming languages have evolved from targeting a single compilation target and platform toward supporting multiple targets. It uses Scala.js as an example and mentions Kotlin and Clojure as other JVM-originated languages targeting JavaScript.

### Source excerpt

I started as a Java developer, but for some time now, I have broadened my horizons. Recently, I thought about how early languages were dedicated to a single target and platform, and now they are broadening their focus. In this post, I want to write down my thoughts in the hope that it may be useful to others, probably to my future self. Definitions You may have been wondering about the title terms.

## Why Choose Pulumi Over Terraform?

DevFeed: [Why Choose Pulumi Over Terraform?](<https://devfeed.tech/articles/why-choose-pulumi-over-terraform-19034.md>)

Original publisher: [Read original article](<https://www.pulumi.com/blog/why-choose-pulumi-over-terraform/>)

Author: Pablo Seibelt

Published: 2026-06-02T00:00:00Z

Content type: comparison

Language: en

Sources: [Pulumi](<https://devfeed.tech/sources/pulumi.md>)

Topics: [Infrastructure as code](<https://devfeed.tech/topics/infrastructure-as-code.md>), [Terraform](<https://devfeed.tech/topics/terraform.md>), [cloud-infrastructure](<https://devfeed.tech/topics/cloud-infrastructure.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [Refactoring](<https://devfeed.tech/topics/refactoring.md>), [Tooling](<https://devfeed.tech/topics/tooling.md>), [migration](<https://devfeed.tech/topics/migration.md>)

Tags: [cloud-infrastructure](<https://devfeed.tech/tags/cloud-infrastructure.md>), [general](<https://devfeed.tech/tags/general.md>), [infrastructure-as-code](<https://devfeed.tech/tags/infrastructure-as-code.md>), [migration](<https://devfeed.tech/tags/migration.md>), [platform-engineering](<https://devfeed.tech/tags/platform-engineering.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-languages](<https://devfeed.tech/tags/programming-languages.md>), [pulumi](<https://devfeed.tech/tags/pulumi.md>), [refactoring](<https://devfeed.tech/tags/refactoring.md>), [software-engineering](<https://devfeed.tech/tags/software-engineering.md>), [terraform](<https://devfeed.tech/tags/terraform.md>), [tooling](<https://devfeed.tech/tags/tooling.md>)

### AI overview

This comparison explains why teams may choose Pulumi over Terraform for infrastructure as code. It highlights Pulumi's use of general-purpose programming languages, package managers, IDEs, testing, refactoring workflows, encrypted secrets, reusable components, and safeguards for destructive changes, while noting that provider bugs, drift, eventual consistency, unknown values, and poor abstractions still require engineering discipline.

### Source excerpt

Terraform is a proven infrastructure as code tool with a large provider and module ecosystem. Many teams choose Pulumi when they want to keep that infrastructure as code model, but write and maintain infrastructure with general-purpose programming languages, familiar package managers, IDEs, testing, and software engineering patterns, while still understanding the refactoring tradeoffs in Terraform's own module refactoring guidance. Why choose Pulumi over Terraform? Pulumi's language SDKs let teams define cloud infrastructure in TypeScript, JavaScript, Python, Go, .NET, or Java -- with YAML and HCL also supported as authoring languages -- while adding first-class workflows for refactoring with Pulumi aliases, secrets, protect, retainOnDelete, deleteBeforeReplace, replaceOnChanges, provider resources, Pulumi stacks, testing, and incremental migration with pulumi import. Pulumi does not remove every hard problem in cloud infrastructure, but it gives teams stronger tools for many day-to-day pain points. Executive summary Pulumi is often a better fit when infrastructure code needs to behave like application code: reviewed, tested, packaged, refactored, and shared across teams. The biggest advantages show up when teams need safer refactors, encrypted secret values, reusable components, clearer provider resources, and guardrails around destructive changes. The tradeoff is important: Pulumi is still an infrastructure as code engine. Provider bugs, cloud API eventual consistency, drift, preview-time unknowns, and poorly designed abstractions still require engineering discipline. The advantage is not magic. The advantage is a stronger programming model and a more familiar developer workflow. Need Terraform pattern Pulumi advantage What still needs care Languages and tooling HCL plus Terraform-specific functions and expressions Pulumi supports general-purpose languages, YAML, and now HCL natively, with the normal IDE, test, and package workflows for each Teams still need code re

## A brief history of C/C++ programming languages

DevFeed: [A brief history of C/C++ programming languages](<https://devfeed.tech/articles/a-brief-history-of-c-c-programming-languages-29400.md>)

Original publisher: [Read original article](<https://lemire.me/blog/2026/04/09/a-brief-history-of-c-c-programming-languages/>)

Author: Daniel Lemire

Published: 2026-04-09T14:58:53Z

Content type: opinion

Language: en

Sources: [Daniel Lemire](<https://devfeed.tech/sources/daniel-lemire.md>)

Topics: [C](<https://devfeed.tech/topics/c.md>), [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Java](<https://devfeed.tech/topics/java.md>), [C#](<https://devfeed.tech/topics/csharp.md>), [Fortran](<https://devfeed.tech/topics/fortran.md>), [Go Language](<https://devfeed.tech/topics/go-language.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Python](<https://devfeed.tech/topics/python.md>)

Tags: [c-c-plus-plus](<https://devfeed.tech/tags/c-c-plus-plus.md>), [compilation](<https://devfeed.tech/tags/compilation.md>), [garbage-collection](<https://devfeed.tech/tags/garbage-collection.md>), [go](<https://devfeed.tech/tags/go.md>), [history](<https://devfeed.tech/tags/history.md>), [languages](<https://devfeed.tech/tags/languages.md>), [memory](<https://devfeed.tech/tags/memory.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-languages](<https://devfeed.tech/tags/programming-languages.md>)

### AI overview

This article presents a brief history of C and C++, explaining how C emerged for low-level systems programming and how C++ added object-oriented, generic, and compile-time metaprogramming features. It then contrasts their portability challenges with Java and discusses JavaScript, Python, C#, and Go. The supplied text ends mid-sentence.

### Source excerpt

Initially, we had languages like Fortran (1957), Pascal (1970), and C (1972). Fortran was designed for number crunching and scientific computing. Pascal was restrictive with respect to low-level access (it was deliberately "safe", as meant for teaching structured programming). So C won out as a language that allowed low-level/unsafe programming (pointer arithmetic, direct memory access) ... Continue reading A brief history of C/C++ programming languages

## Kotlin Coroutines Compared with Reactor for Sequential and Asynchronous Operations

DevFeed: [Kotlin Coroutines Compared with Reactor for Sequential and Asynchronous Operations](<https://devfeed.tech/articles/coroutines-vs-reactor-when-elegance-and-simplicity-crush-complexity-39263.md>)

Original publisher: [Read original article](<https://kt.academy/article/coroutines-vs-reactor>)

Published: 2025-10-06T00:00:00Z

Content type: comparison

Language: en

Sources: [Kt. Academy](<https://devfeed.tech/sources/kt-academy.md>)

Topics: [Coroutines](<https://devfeed.tech/topics/coroutines.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [kotlin-coroutines](<https://devfeed.tech/topics/kotlin-coroutines.md>), [Reactive Streams](<https://devfeed.tech/topics/reactive-streams.md>), [RxJava](<https://devfeed.tech/topics/rxjava.md>), [async/await](<https://devfeed.tech/topics/async-await.md>), [Android](<https://devfeed.tech/topics/android.md>), [Back end](<https://devfeed.tech/topics/backend.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [async](<https://devfeed.tech/tags/async.md>), [asynchronous](<https://devfeed.tech/tags/asynchronous.md>), [await](<https://devfeed.tech/tags/await.md>), [backend](<https://devfeed.tech/tags/backend.md>), [compare](<https://devfeed.tech/tags/compare.md>), [comparison](<https://devfeed.tech/tags/comparison.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-coroutines](<https://devfeed.tech/tags/kotlin-coroutines.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-languages](<https://devfeed.tech/tags/programming-languages.md>), [reactive-streams](<https://devfeed.tech/tags/reactive-streams.md>), [rxjava](<https://devfeed.tech/tags/rxjava.md>), [simple](<https://devfeed.tech/tags/simple.md>), [time](<https://devfeed.tech/tags/time.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

This article compares Kotlin Coroutines with Reactor for backend and Android development. It argues that coroutines provide more readable and straightforward syntax for sequential and asynchronous operations, while Reactor requires additional operators, concepts, and patterns.

### Source excerpt

A comparison of Kotlin Coroutines and Reactor, highlighting the elegance and simplicity of Coroutines over the complexity of Reactor.

## Cangjie -- a programming language from Huawei

DevFeed: [Cangjie -- a programming language from Huawei](<https://devfeed.tech/articles/cangjie-a-programming-language-from-huawei-24546.md>)

Original publisher: [Read original article](<https://medium.com/snapp-mobile/cangjie-a-programming-language-from-huawei-fb0f7776be06?source=rss----bcd96e620b02---4>)

Author: Jasper Morgan

Published: 2025-08-19T07:37:53Z

Content type: opinion

Language: en

Sources: [Snapp Mobile - Medium](<https://devfeed.tech/sources/snapp-mobile-medium.md>)

Topics: [Programming language](<https://devfeed.tech/topics/programming-language.md>), [huawei](<https://devfeed.tech/topics/huawei.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Code](<https://devfeed.tech/topics/code.md>), [Embedded Systems](<https://devfeed.tech/topics/embedded-systems.md>), [Cross-Compilation](<https://devfeed.tech/topics/cross-compilation.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [cloud-computing](<https://devfeed.tech/topics/cloud-computing.md>), [Package Management](<https://devfeed.tech/topics/package-management.md>), [debug](<https://devfeed.tech/topics/debug.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [ide](<https://devfeed.tech/topics/ide.md>)

Tags: [architectures](<https://devfeed.tech/tags/architectures.md>), [bytecode](<https://devfeed.tech/tags/bytecode.md>), [cangjie](<https://devfeed.tech/tags/cangjie.md>), [china](<https://devfeed.tech/tags/china.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [cross-compilation](<https://devfeed.tech/tags/cross-compilation.md>), [debugging](<https://devfeed.tech/tags/debugging.md>), [developers](<https://devfeed.tech/tags/developers.md>), [development](<https://devfeed.tech/tags/development.md>), [embedded-systems](<https://devfeed.tech/tags/embedded-systems.md>), [huawei](<https://devfeed.tech/tags/huawei.md>), [huawei-developers](<https://devfeed.tech/tags/huawei-developers.md>), [language](<https://devfeed.tech/tags/language.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [package-management](<https://devfeed.tech/tags/package-management.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-language](<https://devfeed.tech/tags/programming-language.md>), [programming-languages](<https://devfeed.tech/tags/programming-languages.md>), [tools](<https://devfeed.tech/tags/tools.md>)

### AI overview

This article examines Cangjie, an open-sourced programming language from Huawei. It describes Cangjie as a C-like language with features associated with Swift and Kotlin, support for embedded systems, mobile development, and cloud architectures, interoperability with C and Python, JVM bytecode compilation, cross-compilation, and integrated developer tools. The article suggests Huawei created it to gain more control over its language roadmap and consolidate development skills across products.

### Source excerpt

Cangjie -- a programming language from Huawei Huawei have been busy. Last month they open-sourced a programming language that is looking pretty interesting. Whilst you might not be writing in Cangjie next week, it's good to see what one of the world's largest technology companies is doing such that they have created a new programming language. TL;DR Cangjie is a C-like programming language that feels more like Swift/Kotlin than Java/C# or JavaScript/Typescript. The idea is for Cangjie to become the common programming language to be used throughout Huawei. Cangjie can be used for embedded systems, mobile development, server-side cloud architectures. It supports a variety of programming paradigms (function, OO, procedural), compilation and integration options. Cangjie can call C libraries (and be called from C), use Python libraries and even compile to JVM bytecode. Cangjie supports language extension to create lightweight DSLs. Primarily Cangjie programs are compiled into machine code -- this include cross compilation which mean they can run natively on different computer architectures. Cangjie comes with a set of in-built tools for developers such as package management, debugging, testing and IDE integration. Cangjie is openly available since this month and is in version 0.53.13. Why create a new language? Simply put, Cangjie gives Huawei a level of control and an economy of scale that they cannot get from other languages. Most mainstream languages are driven predominantly by teams in USA and Europe. It is hard to influence the road map for these languages -- especially for those tightly controlled by corporations (e.g. Java/Kotlin/Swift). Furthermore, consolidating programming skills could be a big efficiency gain for Huawei -- engineers working on products ranging from routers to petabyte storage to cloud computing and mobile devices can coalesce around one language and toolset. Show me some code I won't go into any detail here so this is just to satisfy your curiosit

## How Lean Propositions Differ from TypeScript Booleans

DevFeed: [How Lean Propositions Differ from TypeScript Booleans](<https://devfeed.tech/articles/beyond-booleans-36162.md>)

Original publisher: [Read original article](<https://overreacted.io/beyond-booleans/>)

Published: 2025-08-16T00:00:00Z

Content type: tutorial

Language: en

Sources: [Dan Abramov](<https://devfeed.tech/sources/dan-abramov.md>)

Topics: [Lean](<https://devfeed.tech/topics/lean.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Mathematics](<https://devfeed.tech/topics/mathematics.md>), [Code](<https://devfeed.tech/topics/code.md>), [TypeScript](<https://devfeed.tech/topics/typescript.md>)

Tags: [mathematics](<https://devfeed.tech/tags/mathematics.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-languages](<https://devfeed.tech/tags/programming-languages.md>), [types](<https://devfeed.tech/tags/types.md>), [typescript](<https://devfeed.tech/tags/typescript.md>)

### AI overview

This tutorial compares logical expressions in TypeScript with propositions in Lean. It explains that Lean treats propositions as distinct values and types, and that proving a proposition requires supplying a proof rather than simply computing a Boolean result.

### Source excerpt

What is the type of 2 + 2 = 4?

## the algebra of dependent types

DevFeed: [the algebra of dependent types](<https://devfeed.tech/articles/the-algebra-of-dependent-types-36214.md>)

Original publisher: [Read original article](<https://dotat.at/@/2025-05-28-types.html>)

Published: 2025-05-29T00:07:51Z

Content type: article

Language: en

Sources: [Tony Finch's blog](<https://devfeed.tech/sources/tony-finch-s-blog.md>)

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [Functional programming](<https://devfeed.tech/topics/functional-programming.md>), [Standard ML](<https://devfeed.tech/topics/standard-ml.md>), [Rust](<https://devfeed.tech/topics/rust.md>)

Tags: [algebra](<https://devfeed.tech/tags/algebra.md>), [enum](<https://devfeed.tech/tags/enum.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [languages](<https://devfeed.tech/tags/languages.md>), [programming-languages](<https://devfeed.tech/tags/programming-languages.md>), [type-system](<https://devfeed.tech/tags/type-system.md>), [type-theory](<https://devfeed.tech/tags/type-theory.md>), [types](<https://devfeed.tech/tags/types.md>)

### AI overview

An explanation of why big-sigma and big-pi notation appears in dependent type theory. It connects dependent functions and dependent pairs to algebraic data types, showing how products correspond to multiplication and sum types to addition, with examples from type theory, Standard ML, Haskell, and Rust.

### Source excerpt

TIL (or this week-ish I learned) why big-sigma and big-pi turn up in the notation of dependent type theory. I've long been aware of the zoo of more obscure Greek letters that turn up in papers about type system features of functional programming languages, μ, Λ, Π, Σ. Their meaning is usually clear from context but the reason for the choice of notation is usually not explained. I recently stumbled on an explanation for Π (dependent functions) and Σ (dependent pairs) which turn out to be nicer than I expected, and closely related to every-day algebraic data types. sizes of types The easiest way to understand algebraic data types is by counting the inhabitants of a type. For example: the unit type () has one inhabitant, (), and the number 1 is why it's called the unit type; the bool type hass two inhabitants, false and true. I have even seen these types called 1 and 2 (cruelly, without explanation) in occasional papers. product types Or pairs or (more generally) tuples or records. Usually written, (A, B) The pair contains an A and a B, so the number of possible values is the number of possible A values multiplied by the number of possible B values. So it is spelled in type theory (and in Standard ML) like, A * B sum types Or disjoint union, or variant record. Declared in Haskell like, data Either a b = Left a | Right b Or in Rust like, enum Either<A, B> { Left(A), Right(B), } A value of the type is either an A or a B, so the number of possible values is the number of A values plus the number of B values. So it is spelled in type theory like, A + B dependent pairs In a dependent pair, the type of the second element depends on the value of the first. The classic example is a slice, roughly, struct IntSlice { len: usize, elem: &[i64; len], } (This might look a bit circular, but the idea is that an array [i64; N] must be told how big it is - its size is an explicit part of its type - but an IntSlice knows its own size. The traditional dependent "vector" type is a sized li

## Dijkstra's Views on Theory, Academia, and Programming Languages

DevFeed: [Dijkstra's Views on Theory, Academia, and Programming Languages](<https://devfeed.tech/articles/leibniz-s-dream-and-dijkstra-s-nightmare-40518.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/shortform/2025-05-13-2107/>)

Published: 2025-05-13T14:23:11Z

Content type: opinion

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [essays](<https://devfeed.tech/tags/essays.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-languages](<https://devfeed.tech/tags/programming-languages.md>), [shortform](<https://devfeed.tech/tags/shortform.md>)

### AI overview

The author reflects on Edsger Dijkstra's speech "Under the spell of Leibniz's Dream," focusing on its view that elegant theory can have practical value. They critique Dijkstra's dismissive attitude toward industry, students, and modern universities, while discussing his praise of ALGOL 60 and its language innovations.

### Source excerpt

I was inspired to browse some of Edsger Dijkstra's essays today, and came across his speech, "Under the spell of Leibniz's Dream". It's the sort of personal history I love to read, which gives one person's sense of the world over a period of change. One quote that immediately struck me was his view of his country's spirit after WWII: An important side-effect of the hard times was the creation of a spiritual climate in which the distinction between pure and applied science had vanished: of all the things you could do, you just did the most urgent one, and the development of some urgently needed theory was often the most practical thing to do.

## HarmonyOS App Development 101

DevFeed: [HarmonyOS App Development 101](<https://devfeed.tech/articles/harmonyos-app-development-101-24549.md>)

Original publisher: [Read original article](<https://medium.com/snapp-mobile/harmonyos-app-development-101-a861590a45f3?source=rss----bcd96e620b02---4>)

Author: Jasper Morgan

Published: 2025-01-18T23:23:13Z

Content type: tutorial

Language: en

Sources: [Snapp Mobile - Medium](<https://devfeed.tech/sources/snapp-mobile-medium.md>)

Topics: [App](<https://devfeed.tech/topics/app.md>), [Development](<https://devfeed.tech/topics/development.md>), [ide](<https://devfeed.tech/topics/ide.md>), [huawei](<https://devfeed.tech/topics/huawei.md>), [SDK](<https://devfeed.tech/topics/sdk.md>), [Tooling](<https://devfeed.tech/topics/tooling.md>), [jetbrains](<https://devfeed.tech/topics/jetbrains.md>), [Package Management](<https://devfeed.tech/topics/package-management.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [app](<https://devfeed.tech/tags/app.md>), [app-development](<https://devfeed.tech/tags/app-development.md>), [apps](<https://devfeed.tech/tags/apps.md>), [code-completion](<https://devfeed.tech/tags/code-completion.md>), [debug](<https://devfeed.tech/tags/debug.md>), [deployment](<https://devfeed.tech/tags/deployment.md>), [development](<https://devfeed.tech/tags/development.md>), [harmony-os](<https://devfeed.tech/tags/harmony-os.md>), [huawei](<https://devfeed.tech/tags/huawei.md>), [ide](<https://devfeed.tech/tags/ide.md>), [jetbrains](<https://devfeed.tech/tags/jetbrains.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [package-management](<https://devfeed.tech/tags/package-management.md>), [programming-languages](<https://devfeed.tech/tags/programming-languages.md>), [refactoring](<https://devfeed.tech/tags/refactoring.md>), [sdk](<https://devfeed.tech/tags/sdk.md>), [testing](<https://devfeed.tech/tags/testing.md>), [tools](<https://devfeed.tech/tags/tools.md>), [ui](<https://devfeed.tech/tags/ui.md>), [ui-framework](<https://devfeed.tech/tags/ui-framework.md>)

### AI overview

An overview of HarmonyOS Next app development, covering the Huawei-based DevEco Studio IDE, project configuration, SDK versions, modules, and common development features. The article also outlines programming languages, UI frameworks, build tools, package management, execution, debugging, testing, and profiling.

### Source excerpt

Huawei have taken a big step in moving away from the Android platform with the launch of new devices running HarmonyOS Next. This is a brand new operating system that had been design specifically for devices. This means it is lightweight, supports a range of device types, is modular and extensible. In this article we aim to give you an overview of what is available to developers wishing to build apps on this new platform. To that end, we will be looking at the following topics: The IDE Programming Languages UI Framework Build Tools Package Management Running code (devices/emulators) Debugging Testing Profiling Other cool stuff If you are curious about the Harmony platform, its Open Source foundations (OpenHarmony) and its global reach (Oniro), we have written about it here. The IDE The development environment for Harmony apps is currently a Huawei-based IDE which is based on the JetBrains IDE platform. The good news is that JetBrains offers a world-class IDE platform and it makes for a very solid development experience for Harmony apps. For those, wanting to keep to the Open Source side of Harmony (OpenHarmony and Oniro), you are out of luck right now. DevEco Studio is proprietary, albeit free to use software. Let's look at a couple of IDE features -- these should not surprise you but hopefully demonstrates that the platform is already in a good place (as far as IDEs go). Project Creation Creating a project will look familiar already for many. There are a few project templates to choose from to bootstrap your project. New Project Templates You will also then need to configure a couple of options -- a couple of notes on these (which could probably be expanded into a separate article). Firstly, the bundle name is used for app signing and identity. Secondly, an app supports a single SDK version. (The latest SDK version is 13, however version 11 is still widely used.) Thirdly we can specify the module name. The default ('entry') isn't very descriptive. If you have a singl

## On Long Term Software Development

DevFeed: [On Long Term Software Development](<https://devfeed.tech/articles/on-long-term-software-development-36504.md>)

Original publisher: [Read original article](<https://berthub.eu/articles/posts/on-long-term-software-development/>)

Published: 2024-12-22T17:00:00Z

Content type: opinion

Language: en

Sources: [Bert Hubert's writings](<https://devfeed.tech/sources/bert-hubert-s-writings.md>)

Topics: [Development](<https://devfeed.tech/topics/development.md>), [Software](<https://devfeed.tech/topics/software.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [CI/CD](<https://devfeed.tech/topics/cicd.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Framework](<https://devfeed.tech/topics/framework.md>), [Esolang](<https://devfeed.tech/topics/esolang.md>)

Tags: [ci](<https://devfeed.tech/tags/ci.md>), [continuous-deployment](<https://devfeed.tech/tags/continuous-deployment.md>), [continuous-integration](<https://devfeed.tech/tags/continuous-integration.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [development](<https://devfeed.tech/tags/development.md>), [framework](<https://devfeed.tech/tags/framework.md>), [mastodon](<https://devfeed.tech/tags/mastodon.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-languages](<https://devfeed.tech/tags/programming-languages.md>), [software](<https://devfeed.tech/tags/software.md>)

### AI overview

An opinion article reflecting on long-term software development through a talk about the Dutch Electoral Board's open-source Abacus vote tabulation software. It contrasts continuously deployed, heavily tested services with safety-critical software that must remain stable for decades, and discusses dependencies, programming languages, and frameworks as long-term design choices.

### Source excerpt

Recently the Dutch Electoral Board (where I am also a very part time advisor) invited me to do a talk reflecting on their open source Abacus vote tabulation software. Much software is now provided as a service, and is typically deployed continuously (CD, continuous deployment), surrounded by enough automated testing (CI, continuous integration) that we can be reasonably sure that a new revision is likely to at least work to some extent.

## The problem of union types for type systems

DevFeed: [The problem of union types for type systems](<https://devfeed.tech/articles/the-problem-of-union-types-for-type-systems-39390.md>)

Original publisher: [Read original article](<https://kt.academy/article/union-types-into>)

Published: 2024-06-10T00:00:00Z

Content type: opinion

Language: en

Sources: [Kt. Academy](<https://devfeed.tech/sources/kt-academy.md>)

Topics: [union types](<https://devfeed.tech/topics/union-types.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [subtype](<https://devfeed.tech/topics/subtype.md>), [generics](<https://devfeed.tech/topics/generics.md>)

Tags: [generics](<https://devfeed.tech/tags/generics.md>), [inference](<https://devfeed.tech/tags/inference.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-languages](<https://devfeed.tech/tags/programming-languages.md>), [smart-cast](<https://devfeed.tech/tags/smart-cast.md>), [static](<https://devfeed.tech/tags/static.md>), [subtype](<https://devfeed.tech/tags/subtype.md>), [type](<https://devfeed.tech/tags/type.md>), [types](<https://devfeed.tech/tags/types.md>), [union](<https://devfeed.tech/tags/union.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

This article explains why general union types are difficult to add to Kotlin and other statically typed systems. It discusses ambiguity in subtype relationships and generic type inference, including the claim that inference is NP-hard, then describes Kotlin's proposed limited use of union types for representing errors through rich errors.

### Source excerpt

Why union types are not such a good idea for static type systems.

## Ep. 4: Type Coercion in Rust: Ensuring Safety and Preventing Data Loss

DevFeed: [Ep. 4: Type Coercion in Rust: Ensuring Safety and Preventing Data Loss](<https://devfeed.tech/articles/ep-4-type-coercion-in-rust-ensuring-safety-and-preventing-data-loss-22240.md>)

Original publisher: [Read original article](<https://www.ardanlabs.com/blog/2024/05/type-coercion-in-rust-ep-4.html>)

Published: 2024-05-03T00:00:00Z

Content type: tutorial

Language: en

Sources: [William Kennedy](<https://devfeed.tech/sources/william-kennedy.md>)

Topics: [Rust](<https://devfeed.tech/topics/rust.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [C](<https://devfeed.tech/topics/c.md>), [Go Language](<https://devfeed.tech/topics/go-language.md>)

Tags: [c](<https://devfeed.tech/tags/c.md>), [code](<https://devfeed.tech/tags/code.md>), [data-type](<https://devfeed.tech/tags/data-type.md>), [go](<https://devfeed.tech/tags/go.md>), [integrity](<https://devfeed.tech/tags/integrity.md>), [languages](<https://devfeed.tech/tags/languages.md>), [memory-handling](<https://devfeed.tech/tags/memory-handling.md>), [memory-safety](<https://devfeed.tech/tags/memory-safety.md>), [pitfalls](<https://devfeed.tech/tags/pitfalls.md>), [programming-languages](<https://devfeed.tech/tags/programming-languages.md>), [rust](<https://devfeed.tech/tags/rust.md>), [safety](<https://devfeed.tech/tags/safety.md>), [safety-concerns](<https://devfeed.tech/tags/safety-concerns.md>), [software](<https://devfeed.tech/tags/software.md>), [type-coercion](<https://devfeed.tech/tags/type-coercion.md>), [types](<https://devfeed.tech/tags/types.md>)

### AI overview

This video tutorial explains type coercion and data type conversions, including how inadvertent conversions can produce unexpected results. It compares C, Go, and Rust, emphasizing Rust's Into and TryInto traits, explicit casts, error handling, safety, and code integrity.

### Source excerpt

Introduction: Delving into the intricate realm of type coercion, Herbert's insights offer invaluable guidance for Rust developers grappling with the complexities of data type conversions: Gain insights into the nuances of type coercion, a fundamental aspect of programming languages, and its potential pitfalls, drawing parallels with numerical computation surprises. Explore how Go and Rust tackle inadvertent type coercion, prioritizing program integrity by making it challenging to assign values between incompatible types.

## Ep. 3: Ensuring Data Integrity in Rust: Battling Overflow and Underflow

DevFeed: [Ep. 3: Ensuring Data Integrity in Rust: Battling Overflow and Underflow](<https://devfeed.tech/articles/ep-3-ensuring-data-integrity-in-rust-battling-overflow-and-underflow-22279.md>)

Original publisher: [Read original article](<https://www.ardanlabs.com/blog/2024/29/ensuring-data-integrity-in-rust-ep-3.html>)

Published: 2024-04-29T00:00:00Z

Content type: tutorial

Language: en

Sources: [William Kennedy](<https://devfeed.tech/sources/william-kennedy.md>)

Topics: [Rust](<https://devfeed.tech/topics/rust.md>), [integrity](<https://devfeed.tech/topics/integrity.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Software](<https://devfeed.tech/topics/software.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [errors](<https://devfeed.tech/tags/errors.md>), [insights](<https://devfeed.tech/tags/insights.md>), [integrity](<https://devfeed.tech/tags/integrity.md>), [memory-handling](<https://devfeed.tech/tags/memory-handling.md>), [memory-safety](<https://devfeed.tech/tags/memory-safety.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-languages](<https://devfeed.tech/tags/programming-languages.md>), [rust](<https://devfeed.tech/tags/rust.md>), [safety-concerns](<https://devfeed.tech/tags/safety-concerns.md>), [software](<https://devfeed.tech/tags/software.md>), [software-development](<https://devfeed.tech/tags/software-development.md>)

### AI overview

This episode explains integer overflow and underflow, including their causes, examples, and potential effects in software. It focuses on how Rust's static analysis and checked arithmetic operations help developers detect or handle these issues and support code integrity.

### Source excerpt

Introduction: Delving into the critical issues of overflow and underflow, Herbert's insights offer valuable takeaways for Rust developers: Rust's static analysis capabilities enable early detection and prevention of overflow and underflow errors, allowing developers to address potential issues before they manifest in runtime environments. Through Rust's emphasis on safety and correctness, developers can leverage built-in mechanisms to handle overflow and underflow situations gracefully, reducing the likelihood of software crashes and unexpected behavior.

## Making Twig Macros Work Like Functions

DevFeed: [Making Twig Macros Work Like Functions](<https://devfeed.tech/articles/making-twig-macros-work-like-functions-31280.md>)

Original publisher: [Read original article](<https://nystudio107.com/blog/making-twig-macros-work-like-functions>)

Author: andrew@nystudio107.com (Andrew Welch)

Published: 2023-07-14T18:38:00Z

Content type: tutorial

Language: en

Sources: [nystudio107 | Articles on modern web development.](<https://devfeed.tech/sources/nystudio107-articles-on-modern-web-development.md>)

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [Development](<https://devfeed.tech/topics/development.md>), [reusable code](<https://devfeed.tech/topics/reusable-code.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [functions](<https://devfeed.tech/tags/functions.md>), [insights](<https://devfeed.tech/tags/insights.md>), [just](<https://devfeed.tech/tags/just.md>), [languages](<https://devfeed.tech/tags/languages.md>), [learn](<https://devfeed.tech/tags/learn.md>), [like](<https://devfeed.tech/tags/like.md>), [macros](<https://devfeed.tech/tags/macros.md>), [make](<https://devfeed.tech/tags/make.md>), [manipulate](<https://devfeed.tech/tags/manipulate.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-languages](<https://devfeed.tech/tags/programming-languages.md>), [return](<https://devfeed.tech/tags/return.md>), [returning](<https://devfeed.tech/tags/returning.md>), [reusable-code](<https://devfeed.tech/tags/reusable-code.md>), [twig](<https://devfeed.tech/tags/twig.md>), [value](<https://devfeed.tech/tags/value.md>), [values](<https://devfeed.tech/tags/values.md>)

### AI overview

A tutorial on making Twig macros return values that can be manipulated like function results. It demonstrates a sales-calculation macro, whitespace control, and returning a value for further computations such as sales tax.

### Source excerpt

Learn how to make Twig macros return values you can manipulate, just like functions in other programming languages

## A Practical Core Subset of Regular Expressions

DevFeed: [A Practical Core Subset of Regular Expressions](<https://devfeed.tech/articles/regex-isn-t-hard-33418.md>)

Original publisher: [Read original article](<https://timkellogg.me/blog/2023/07/11/regex>)

Published: 2023-07-11T00:00:00Z

Content type: tutorial

Language: en

Sources: [Tim Kellogg](<https://devfeed.tech/sources/tim-kellogg.md>)

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [complexity](<https://devfeed.tech/tags/complexity.md>), [languages](<https://devfeed.tech/tags/languages.md>), [portable](<https://devfeed.tech/tags/portable.md>), [programming-languages](<https://devfeed.tech/tags/programming-languages.md>), [regex](<https://devfeed.tech/tags/regex.md>)

### AI overview

This tutorial presents a core subset of regular expressions that is intended to be easier to understand and remember. It explains why regex can be useful, notes that shortcuts add complexity, and introduces character sets, repetition, groups, and operators.

### Source excerpt

Regex gets a bad reputation for being very complex. That's fair, but I also think that if you focus on a certain core subset of regex, it's not that hard. Most of the complexity comes from various "shortcuts" that are hard to remember. If you ignore those, the language itself is fairly small and portable across programming languages.

## Fully bootstrapping Java from source in Wolfi

DevFeed: [Fully bootstrapping Java from source in Wolfi](<https://devfeed.tech/articles/fully-bootstrapping-java-from-source-in-wolfi-13054.md>)

Original publisher: [Read original article](<https://www.chainguard.dev/unchained/fully-bootstrapping-java-from-source-in-wolfi>)

Published: 2023-06-02T00:00:00Z

Content type: article

Language: en

Sources: [Chainguard: Unchained](<https://devfeed.tech/sources/chainguard-unchained.md>)

Topics: [Java](<https://devfeed.tech/topics/java.md>), [openjdk](<https://devfeed.tech/topics/openjdk.md>), [supply-chain-security](<https://devfeed.tech/topics/supply-chain-security.md>), [chainguard](<https://devfeed.tech/topics/chainguard.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [gcc](<https://devfeed.tech/topics/gcc.md>)

Tags: [bootstrapping](<https://devfeed.tech/tags/bootstrapping.md>), [chainguard](<https://devfeed.tech/tags/chainguard.md>), [chainguard-images](<https://devfeed.tech/tags/chainguard-images.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [distribution](<https://devfeed.tech/tags/distribution.md>), [eclipse-compiler-for-java](<https://devfeed.tech/tags/eclipse-compiler-for-java.md>), [gcc](<https://devfeed.tech/tags/gcc.md>), [gnu-linux](<https://devfeed.tech/tags/gnu-linux.md>), [java](<https://devfeed.tech/tags/java.md>), [jdk](<https://devfeed.tech/tags/jdk.md>), [linux](<https://devfeed.tech/tags/linux.md>), [openjdk](<https://devfeed.tech/tags/openjdk.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-languages](<https://devfeed.tech/tags/programming-languages.md>), [provenance](<https://devfeed.tech/tags/provenance.md>), [security](<https://devfeed.tech/tags/security.md>), [software](<https://devfeed.tech/tags/software.md>), [software-supply-chain](<https://devfeed.tech/tags/software-supply-chain.md>), [software-supply-chain-security](<https://devfeed.tech/tags/software-supply-chain-security.md>), [supply-chain-security](<https://devfeed.tech/tags/supply-chain-security.md>), [wolfi](<https://devfeed.tech/tags/wolfi.md>)

### AI overview

Chainguard describes how it is fully bootstrapping Java from source in Wolfi. The process builds a chain of OpenJDK packages with provenance extending from source code to final binary packages, using GNU Classpath, GNU Compiler for Java, and the Eclipse Compiler for Java to overcome historical bootstrapping dependencies.

### Source excerpt

Learn how Chainguard engineers created a chain of OpenJDK packages to provide full provenance from pure source code for the entire Java ecosystem in Wolfi.

## 26 programming languages in 25 days, Part 2: Reflections on language design

DevFeed: [26 programming languages in 25 days, Part 2: Reflections on language design](<https://devfeed.tech/articles/26-programming-languages-in-25-days-part-2-reflections-on-language-design-35233.md>)

Original publisher: [Read original article](<http://matt.might.net/articles/26-languages-part2/>)

Published: 2022-12-31T19:36:56Z

Content type: opinion

Language: en

Sources: [Matt Might](<https://devfeed.tech/sources/matt-might.md>)

Topics: [Programming language](<https://devfeed.tech/topics/programming-language.md>), [Functional programming](<https://devfeed.tech/topics/functional-programming.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>), [Advent of Code](<https://devfeed.tech/topics/advent-of-code.md>)

Tags: [advent-of-code](<https://devfeed.tech/tags/advent-of-code.md>), [algorithms](<https://devfeed.tech/tags/algorithms.md>), [algorithms-and-data-structures](<https://devfeed.tech/tags/algorithms-and-data-structures.md>), [functional](<https://devfeed.tech/tags/functional.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-languages](<https://devfeed.tech/tags/programming-languages.md>)

### AI overview

The author reflects on completing Advent of Code 2022 with 26 programming languages in 25 days. They found that functional techniques, algorithms, and data structures generally mattered more than language performance, while language design choices such as syntax, typing, and purity affected readability, debugging, and development speed in different puzzle contexts.

### Source excerpt

I recently wrote about completing Advent of Code 2022 using a different programming language (or two) every day for 25 days. That note focused on the strategy, tactics and logistics involved in using 26 languages in 25 days without saying much about the languages or the experience itself. Using so many languages in such a short span provided insight into tradeoffs in language design. Here are my two high-level reflections from the experience: Good program design in the first part of each puzzle - especially more functional techniques and abstractions - tended to make the second part easier. So, in general, functional languages seemed to have the advantage in the puzzles. Using better algorithms and data structures was more important than having a "faster" programming language. There was never a time where rewriting in another language felt like the right way to get better performance. Read on for more specific reflections on language design. Click here to read the rest of the article

## If Programming Languages Were Futurama Characters

DevFeed: [If Programming Languages Were Futurama Characters](<https://devfeed.tech/articles/if-programming-languages-were-futurama-characters-30185.md>)

Original publisher: [Read original article](<https://www.netmeister.org/blog/futurama.html>)

Published: 2022-05-10T02:28:32Z

Content type: opinion

Language: en

Sources: [Signs of Triviality](<https://devfeed.tech/sources/signs-of-triviality.md>)

Topics: [Programming language](<https://devfeed.tech/topics/programming-language.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [languages](<https://devfeed.tech/tags/languages.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-languages](<https://devfeed.tech/tags/programming-languages.md>)

### AI overview

An article invites readers to map their favorite or least favorite programming language to a Futurama Planet Express crew member according to the language's characteristics.

### Source excerpt

Map your (least) favorite programming language to your favorite Planet Express crew member based on its characteristics.

## Haskell 102 Lecture Notes

DevFeed: [Haskell 102 Lecture Notes](<https://devfeed.tech/articles/haskell-102-lecture-notes-27924.md>)

Original publisher: [Read original article](<http://alt-romes.github.io/posts/lectures/2022-05-08-lecture-2.html>)

Published: 2022-05-08T00:00:00Z

Content type: tutorial

Language: en

Sources: [Romes' Musings](<https://devfeed.tech/sources/romes-musings.md>)

Topics: [Haskell](<https://devfeed.tech/topics/haskell.md>), [Functional programming](<https://devfeed.tech/topics/functional-programming.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [function](<https://devfeed.tech/tags/function.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [haskell](<https://devfeed.tech/tags/haskell.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-languages](<https://devfeed.tech/tags/programming-languages.md>), [types](<https://devfeed.tech/tags/types.md>)

### AI overview

Lecture notes introducing Haskell function types, currying, partial application, higher-order functions, laziness, recursion, recursive data structures, and type classes.

### Source excerpt

Contents 1 Functions Types, Currying, Partial application, Higher-order functions 2 Laziness 3 Recursion: Inductive Method 4 Recursive data structures 5 Type Classes 6 Type Classes Kinds, Constraints 1 Functions Types, Currying, Partial application, Higher-order functions All functions have a type, the function type: length :: [a] -> Int length [] = 0 length (x:xs) = 1 + length xs The same way we think about the Either type constructor, and about the tuple type constructor (,), we can think about the function type type constructor (the arrow ->). They are all type constructors that take two arguments. data Either a b = Left a | Right b data (,) a b = (a, b) -- pseudo code data (->) a b = a -> b -- pseudo code This means that the (->) type constructor, when applied to two types a and b, creates a new type a -> b, where a is the input type and b the return type. This beggets the question, what is the type of a function that takes two arguments? There are two ways to define multi-argument functions. The first would be to think about functions that receive multiple arguments in a tuple. prepend :: (Char, String) -> String prepend (c, str) = c:str You could even use it like this prepend('h', "ello"), which somewhat resembles the imperative style function call. The second option is to have a function take one argument a, and return a function that takes another argument b and only then returns c. prepend :: Char -> (String -> String) prepend c = (\str -> c:str) And this is the most common way to have multi-argument functions in functional programming languages. In Haskell, thinking about two argument functions and functions that return functions is really the same thing. The most common way of writing the two argument function prepend in Haskell, read "prepend is a function that takes two arguments of type Char and String and returns String", would be prepend :: Char -> String -> String prepend c str = c:str The (Char, String) -> String version is said to be an uncurried

## Writing a WebAssembly Service in TinyGo for Wagi and Spin

DevFeed: [Writing a WebAssembly Service in TinyGo for Wagi and Spin](<https://devfeed.tech/articles/writing-a-webassembly-service-in-tinygo-for-wagi-and-spin-15397.md>)

Original publisher: [Read original article](<https://www.fermyon.com/blog/tinygo-webassembly-favicon-server>)

Author: Matt Butcher

Published: 2022-04-16T19:39:08Z

Content type: tutorial

Language: en

Sources: [Fermyon - Experience the next wave of cloud computing.](<https://devfeed.tech/sources/fermyon-experience-the-next-wave-of-cloud-computing.md>)

Topics: [WebAssembly](<https://devfeed.tech/topics/web-assembly.md>), [Go Language](<https://devfeed.tech/topics/go-language.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [build](<https://devfeed.tech/tags/build.md>), [go](<https://devfeed.tech/tags/go.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-languages](<https://devfeed.tech/tags/programming-languages.md>), [webassembly](<https://devfeed.tech/tags/webassembly.md>)

### AI overview

This post describes building a small WebAssembly service with TinyGo, using Wagi and Spin.

### Source excerpt

Of the growing list of WebAssembly capable programming languages, Go is one of our favorites. In this post, we build a real (but tiny) service with TinyGo.

[Next page](<https://devfeed.tech/tags/programming-languages.md?cursor=WyIyMDIyLTA0LTE2VDE5OjM5OjA4KzAwOjAwIiwgIjU5YWRhN2FhLTViMjQtNDgwNS05NjI0LTNiOTYyMjBiYWM5NiJd>)