We are currently in the process of converting the website to the new design. Some pages, like this one, are still broken. We appreciate your patience.
Bitwise»Episode Guide
Domain-Specific Languages In Python, Part 2
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next marker
t / T Toggle theatre / SUPERtheatre mode
V Revert filter to original state Y Select link (requires manual Ctrl-c)

Menu toggling

q Quotes r References f Filter y Link c Credits

In-Menu Movement

a
w
s
d
h j k l


Quotes and References Menus

Enter Jump to timecode

Quotes, References and Credits Menus

o Open URL (in new tab)

Filter Menu

x, Space Toggle category and focus next
X, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus

Filter and Link Menus

z Toggle filter / linking mode

Credits Menu

Enter Open URL (in new tab)
0:00Recap and set the stage for the day
🗩
0:00Recap and set the stage for the day
🗩
0:00Recap and set the stage for the day
🗩
0:33Review off-stream work factoring out the interpreter's dispatch logic, including the Visitor class
📖
0:33Review off-stream work factoring out the interpreter's dispatch logic, including the Visitor class
📖
0:33Review off-stream work factoring out the interpreter's dispatch logic, including the Visitor class
📖
6:10Review use of the Visitor by Copier
📖
6:10Review use of the Visitor by Copier
📖
6:10Review use of the Visitor by Copier
📖
7:50Review use of the Visitor by Linearizer
📖
7:50Review use of the Visitor by Linearizer
📖
7:50Review use of the Visitor by Linearizer
📖
11:06Print out the result of a linearize() call
11:06Print out the result of a linearize() call
11:06Print out the result of a linearize() call
11:30Run it to see the result of this linearize() call
🏃
11:30Run it to see the result of this linearize() call
🏃
11:30Run it to see the result of this linearize() call
🏃
13:02Review the new compile() function
📖
13:02Review the new compile() function
📖
13:02Review the new compile() function
📖
14:49Run compile() on our test expression
14:49Run compile() on our test expression
14:49Run compile() on our test expression
15:31Run it to see the result of compile()
🏃
15:31Run it to see the result of compile()
🏃
15:31Run it to see the result of compile()
🏃
17:37Review the Measurer class
📖
17:37Review the Measurer class
📖
17:37Review the Measurer class
📖
26:44Q&A
🗩
26:44Q&A
🗩
26:44Q&A
🗩
27:05Introduce XorRemover class and remove_xors() to transform instances of XOR to AND / OR
27:05Introduce XorRemover class and remove_xors() to transform instances of XOR to AND / OR
27:05Introduce XorRemover class and remove_xors() to transform instances of XOR to AND / OR
31:58Test remove_xors()
🏃
🖮
31:58Test remove_xors()
🏃
🖮
31:58Test remove_xors()
🏃
🖮
34:51Demonstrate that both occurrences of (x & ~z) are not independent copies
🏃
34:51Demonstrate that both occurrences of (x & ~z) are not independent copies
🏃
34:51Demonstrate that both occurrences of (x & ~z) are not independent copies
🏃
36:01Targeting different languages easily with this XOR removing approach
36:01Targeting different languages easily with this XOR removing approach
36:01Targeting different languages easily with this XOR removing approach
36:45Determine to work on the final versions of ideas next time
🗩
36:45Determine to work on the final versions of ideas next time
🗩
36:45Determine to work on the final versions of ideas next time
🗩
37:14Set up to do some metaprogramming
🗩
37:14Set up to do some metaprogramming
🗩
37:14Set up to do some metaprogramming
🗩
37:51Review full_adder() with a view to making an n-bit adder
📖
37:51Review full_adder() with a view to making an n-bit adder
📖
37:51Review full_adder() with a view to making an n-bit adder
📖
39:23Introduce make_adder() to make an n-bit adder through metaprogramming
39:23Introduce make_adder() to make an n-bit adder through metaprogramming
39:23Introduce make_adder() to make an n-bit adder through metaprogramming
44:02Test make_adder() on various bit-lengths
🏃
🖮
44:02Test make_adder() on various bit-lengths
🏃
🖮
44:02Test make_adder() on various bit-lengths
🏃
🖮
45:42Compile an 8-bit adder
45:42Compile an 8-bit adder
45:42Compile an 8-bit adder
46:32Run it to see our compiled 8-bit adder
🏃
46:32Run it to see our compiled 8-bit adder
🏃
46:32Run it to see our compiled 8-bit adder
🏃
47:06Introduce compile_adder() including an adder() front-end
47:06Introduce compile_adder() including an adder() front-end
47:06Introduce compile_adder() including an adder() front-end
52:17Test compile_adder()
🏃
🖮
52:17Test compile_adder()
🏃
🖮
52:17Test compile_adder()
🏃
🖮
53:06Tabulate the resulting calculations of our generated adders
53:06Tabulate the resulting calculations of our generated adders
53:06Tabulate the resulting calculations of our generated adders
53:53Run it to see that the 1-bit adder seems good, but the 2-bit adder doesn't, and investigate why
🏃
53:53Run it to see that the 1-bit adder seems good, but the 2-bit adder doesn't, and investigate why
🏃
53:53Run it to see that the 1-bit adder seems good, but the 2-bit adder doesn't, and investigate why
🏃
55:36elavid Maybe do `range(n+1)` on line 339 so we can see the full n+1 bits of z
🗪
55:36elavid Maybe do `range(n+1)` on line 339 so we can see the full n+1 bits of z
🗪
55:36elavid Maybe do `range(n+1)` on line 339 so we can see the full n+1 bits of z
🗪
55:39Enable adder() to output every last bit
55:39Enable adder() to output every last bit
55:39Enable adder() to output every last bit
56:01elavid Yeah, it was printing 1+1=0 earlier because it didn't see the carry.
🗪
56:01elavid Yeah, it was printing 1+1=0 earlier because it didn't see the carry.
🗪
56:01elavid Yeah, it was printing 1+1=0 earlier because it didn't see the carry.
🗪
56:25Check out our generated adder code
📖
56:25Check out our generated adder code
📖
56:25Check out our generated adder code
📖
58:00Hardcode c to 0 in make_adder() and continue to investigate
58:00Hardcode c to 0 in make_adder() and continue to investigate
58:00Hardcode c to 0 in make_adder() and continue to investigate
1:00:40elavid Ohh, the bits in your lists are LSb first, but isn't that loop treating them as MSb first?
🗪
1:00:40elavid Ohh, the bits in your lists are LSb first, but isn't that loop treating them as MSb first?
🗪
1:00:40elavid Ohh, the bits in your lists are LSb first, but isn't that loop treating them as MSb first?
🗪
1:01:10Fix adder() to treat the bits as most-significant bit first
1:01:10Fix adder() to treat the bits as most-significant bit first
1:01:10Fix adder() to treat the bits as most-significant bit first
1:01:44Run it to see that it looks correct
🏃
1:01:44Run it to see that it looks correct
🏃
1:01:44Run it to see that it looks correct
🏃
1:01:58Test compile_adder() on an 8-bit adder
🏃
1:01:58Test compile_adder() on an 8-bit adder
🏃
1:01:58Test compile_adder() on an 8-bit adder
🏃
1:04:40That's probably it for today, with a glimpse into the future diving into the HDL proper
🗩
1:04:40That's probably it for today, with a glimpse into the future diving into the HDL proper
🗩
1:04:40That's probably it for today, with a glimpse into the future diving into the HDL proper
🗩