Тёмный

Nim - First natively compiled language w/ hot code-reloading at runtime - Viktor Kirilov [ACCU 2019] 

ACCU Conference
Подписаться 16 тыс.
Просмотров 15 тыс.
50% 1

#nim #c++ #ACCUConf
Nim is a statically typed systems and applications programming language which offers perhaps some of the most powerful metaprogramming capabilities. It is also the first language that is compiled to native executable code and fully supports runtime hot code-reloading without almost any limitations, along with a REPL - a language environment cherished especially by those working in science and education.
The session consists of a quick introduction to the language, followed by a demo of runtime hot code-reloading + the use of a REPL along with an explanation of how it all works. The approach is applicable to other compiled languages as well - even C/C++!
------------
With 4 years of professional experience with C++ in the games and VFX industries, Viktor currently spends his time writing open source software (since 01.01.2016) - and occasionally doing some contract work. He is the author of doctest - "The fastest feature-rich C++11 single-header testing framework". His interests are the making of games and game engines, high performance code, data oriented design, optimizing workflows and incorporating good practices in the software development process such as testing and the use of modern tools like static analysis or instrumentation. Viktor is from Sofia, Bulgaria and his profession is his hobby. Personal website: onqtam.com/
-------------------------
Future Conferences:
ACCU 2019 Autumn Conference, Belfast (UK):
2019-11-11 and 2019-11-12.
ACCU 2020 Spring Conference, Bristol (UK), Marriott City Centre:
2020-03-24 to 2020-03-28.
-------------------------
ACCU Website: www.accu.org
ACCU Conference Website: conference.accu.org
ACCU Twitter: @ACCUConf
ACCU RU-vid: / accuconf
Filmed and Edited by Digital Medium Ltd - events.digital-medium.co.uk
Contact: events@digital-medium.co.uk

Опубликовано:

 

16 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 49   
@ACCUConf
@ACCUConf 5 лет назад
Due to the huge volume of footage/material related to these talk videos we are unable to review each video in its entirety. We try our best to catch any errors, mistakes or issues with the videos prior to their release online, but sometimes they do slip through. If you notice an error with this video, or you feel any part of it is not up to scratch, please inform us by leaving a comment and we will do our very best to correct the issue and upload a new version as soon as possible. We also welcome any feedback related to the videos. If you think there's something we can do better, or perhaps just differently, then please do let us know so that we can adapt our processes for future videos. If you are a speaker and wish to discuss your video or have noticed an error you would like corrected, please contact us directly here: events@digital-medium.co.uk
@leonlysak4927
@leonlysak4927 3 года назад
I never expected to see a video on hot code reloading for Nim but I gave it a shot searching lol great presentation! I'm looking to use this for a Browser-based IDE for Nim
@karlbooklover
@karlbooklover 5 лет назад
Dart supports hot reload a while now github.com/dart-lang/sdk/wiki/Hot-reload
@thegioveZ
@thegioveZ 5 лет назад
Common Lisp would like to have a word with you.
@KazKylheku
@KazKylheku 5 лет назад
Pre-Common-Lisp Lisp would in turn like a word with you.
@longde
@longde 5 лет назад
@Alex Libman It seems you don't understand... SBCL, CCL, Allegro CL, LispWorks, all of them compile Lisp to NATIVE CODE, at compile time or at runtime, and can do HOT CODE RELOADING at runtime as well, WITHOUT INTERRUPTING the running program, without requiring any kind of plugin or kludge or whatever.
@KazKylheku
@KazKylheku 5 лет назад
@Alex Libman The definition of "natively compiled" doesn't depend on the size of run-time dependencies or image. It means that source code is translated to native code. SBCL has big binaries because it bundles a whole lot of things together (most of which a hello world program doesn't need). Similarly if a C hello world program is linked to a big C library like glibc, it also doesn't use most of that cruft that is in there. The program is still native code, like the SBCL hello world.
@longde
@longde 5 лет назад
@Alex Libman What could be left for discussion? Common Lisp already does all that It's claimed (regarding hot code reloading and native compilation) and more; thus language exists formally since 1984 and is extensively documented on the web, so instead of discussing, just read more about it. Nothing against nim, as long as claims are better researched.
@longde
@longde 5 лет назад
@Alex Libman btw, most Common Lisp implementations (SBCL, CCL, CMUCL, LispWorks, Allegro CL, CLASP) compile directly to native code by default, yes, machine language, and you can even disassemble the functions straight from the REPL.
@uncannydeduction
@uncannydeduction 4 года назад
I don't like that the language is so capable and has so many functionalities. Makes me distrust it. Why GC...?
@ACCUConf
@ACCUConf 3 года назад
We have forwarded your comment to Viktor! Hopefully he can provide some further insight!
@uncannydeduction
@uncannydeduction 3 года назад
@@ACCUConf Hehe... I changed my mind. It seems rock solid. Noticed that there is a "GC arc" option also.
@kefsound
@kefsound 5 лет назад
Wonderful video. Please remove the claim than Nim is the first language to do hot code reloading.
@superagucova
@superagucova 5 лет назад
at runtime and natively compiled...
@longde
@longde 5 лет назад
@@superagucova It isn't the first by any long shot.
@a0um
@a0um Год назад
@@longde please, share which are the other ones you know of for the benefit of the readers.
@longde
@longde 5 лет назад
You guys had no idea Common Lisp has had ALL this (and more) since 1984, right?
@SkyVaultGames
@SkyVaultGames 5 лет назад
You could even do it in C++ with dlls....
@raymondhill7837
@raymondhill7837 5 лет назад
common lisp performs terribly
@user-tb6gi7jt4d
@user-tb6gi7jt4d 5 лет назад
@@raymondhill7837 that doesn't have anything to do with the argument
@sergeiepatov7683
@sergeiepatov7683 4 года назад
[Troll mode on] FORTH had it even earlier
@bitbloop
@bitbloop 5 лет назад
🇧🇬 🇧🇬 🇧🇬 🇧🇬 🇧🇬 🇧🇬 🇧🇬 🇧🇬 🇧🇬
@R3AktoRMacedonia
@R3AktoRMacedonia 5 лет назад
🇲🇰🇲🇰🇲🇰🇲🇰🇲🇰🇲🇰🇲🇰🇲🇰🇲🇰🇲🇰🇲🇰🇲🇰
@androth1502
@androth1502 5 лет назад
so basically a c pre-processor with garbage collection.
@androth1502
@androth1502 5 лет назад
@Rusty Nütz an assembly pre-processor, yes. but there are C compilers that directly produce object code. it's all a matter of how many layers of abstraction you have before object code is produced. the less layers of abstraction, the better the performance.
@androth1502
@androth1502 5 лет назад
@Rusty Nütz you can program well or you can program badly in any language. c lets you reason about the code you write as well. the more abstraction layers you add, the more cost you add. either to performance, or to performance and production time. nim is fine for people who want to pay that cost for whatever benefit they think nim offers them.
@KatarDan
@KatarDan 5 лет назад
Androth what are the costs you are talking exactly? This is the same analogy as C and asm. Nim let’s you write bigger programs that you otherwise would write in C. And it is even not very clear if you would write it more efficiently, because humans write for humans,nim writes C for machines. This was about performance. And production time - you spend less time writing code in exchange for a couple of secs during compilation - how is that considered a cost?
@androth1502
@androth1502 5 лет назад
​@@KatarDan a competent C programmer can write programs as easily as a competent nim programmer. the cost comes in performance. i realize most modern programmers who are weaned on python and javascript don't care for performance. but some of us still do. and if your'e a systems programmer, you definitely do.
@KatarDan
@KatarDan 5 лет назад
@@androth1502 I'm not sure I agree with that every competent programmer can easily write anything in his language. Some things are easier and you use them more often, some things are harder, you try to avoid them. In this way the language shapes your mind and it affects both time and effort to implement things. I also do care about performance but there's no performance penalty here. Better abstractions do not necessarily mean degradation in performance. I already noted that hand-written asm is not necessarily faster at scale; and if you really do want to go out of your way and make it faster, you will probably have to spend much more time than it would be appropriate for the benefits. In the same way that C is a better abstraction over assembler, Nim is a better abstraction over C. I don't believe in "competent" programmers. I think that competent programmers already created sophisticated tools to care less about all the plumbing.
Далее
Metaprogramming with Nim
14:38
Просмотров 6 тыс.
Nim 2.0 Release! | Prime News
20:03
Просмотров 63 тыс.
Andreas Rumpf: Welcome to NimConf 2021 + Zen of Nim
50:44
Think Parallel - Bryce Adelstein Lelbach - ACCU 2024
1:05:08
Premature Optimization
12:39
Просмотров 805 тыс.