TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Ask HN: Experience using dynamic languages for big projects

3 点作者 throwaway3840512 个月前
To give you some context for my question:<p>I would consider myself an experienced developer and have built software with different languages in different domains. My life runs on Bash and for super small personal projects I love the workflow of dynamic languages like Ruby or Python. I would also consider myself to be quite adequate at TDD to drive my development, use REPLs for rapid feedback etc.. (I mention this, because I often saw people dismissing dynamic languages, which used a workflow which only works with statically typed languages.)<p>With this context, I observed that many other developers and I have a threshold of N lines of code (3000, 5000, ...?), where they start to prefer languages with static type checkers. (Of course dependent on the domain and give or take.)<p>Especially when working in teams, I experienced people doing bad things in code w&#x2F;o a static type checker, and of course when using languages like Golang, TypeScript or Java, the tooling is IMHO on a completly different level.<p>I am interested in experiences from people using dynamic languages for medium to big &gt;= 10000 LOC projects in teams of 2 or more people which also have enough experience with statically typed languages to make a informed decission. What is your general experience? What kind of projects did you do? Would you use dynamic languages again for this projects? What advice would you give for using dynamic languages successfully and sustainably? What problems did you discover?

1 comment

wavemode12 个月前
I once worked at a startup with a few hundred thousand LOCs of JavaScript (nodejs). We were in the process of evaluating TypeScript but were mostly still on plain JS.<p>The project had good test coverage. The main issue I had working in that codebase was never reliability, it was documentation. It&#x27;s simply harder to read code that doesn&#x27;t have types annotated. It takes longer to figure out what the shape of some certain data is, or is supposed to be.<p>Separately from that job, I&#x27;ve also worked with 1M+ LOC codebases in Ruby as well as Python. The Ruby codebase was statically typechecked with Sorbet and the Python with mypy. Big improvement to developer experience IMO.<p>It&#x27;s common to ask, &quot;why even use Ruby&#x2F;Python and then typecheck it anyway?&quot; But that question misses the point. The power of dynamic languages, in my opinion, isn&#x27;t really that the types are dynamic. Rather, it is that the environment is dynamic. One thing this unlocks is that types and functions are just values and can be freely inspected, and created, at runtime. Another is that you can attach a REPL to a running system and inspect and debug it, live. Both of these allowed us to develop features and solve problems at a greater velocity than if we&#x27;d been working with a more static language.
评论 #40616287 未加载