Artwork

Christoph Neumann and Nate Jones, Christoph Neumann, and Nate Jones에서 제공하는 콘텐츠입니다. 에피소드, 그래픽, 팟캐스트 설명을 포함한 모든 팟캐스트 콘텐츠는 Christoph Neumann and Nate Jones, Christoph Neumann, and Nate Jones 또는 해당 팟캐스트 플랫폼 파트너가 직접 업로드하고 제공합니다. 누군가가 귀하의 허락 없이 귀하의 저작물을 사용하고 있다고 생각되는 경우 여기에 설명된 절차를 따르실 수 있습니다 https://ko.player.fm/legal.
Player FM -팟 캐스트 앱
Player FM 앱으로 오프라인으로 전환하세요!

Ep 096: Gaming Data

26:39
 
공유
 

Manage episode 383448892 series 2463849
Christoph Neumann and Nate Jones, Christoph Neumann, and Nate Jones에서 제공하는 콘텐츠입니다. 에피소드, 그래픽, 팟캐스트 설명을 포함한 모든 팟캐스트 콘텐츠는 Christoph Neumann and Nate Jones, Christoph Neumann, and Nate Jones 또는 해당 팟캐스트 플랫폼 파트너가 직접 업로드하고 제공합니다. 누군가가 귀하의 허락 없이 귀하의 저작물을 사용하고 있다고 생각되는 경우 여기에 설명된 절차를 따르실 수 있습니다 https://ko.player.fm/legal.

Each week, we discuss a different topic about Clojure and functional programming.

If you have a question or topic you'd like us to discuss, tweet @clojuredesign, send an email to [email protected], or join the #clojuredesign-podcast channel on the Clojurians Slack.

This week, the topic is: "playing games with data." We go back to start and play through a composition strategy to see where we land.

Our discussion includes:

  • The return of Tic Tac Toe. It's back!
  • The biggest difference between object-oriented and functional composition.
  • Can a game board play its own pieces? Isn't that the stuff of horror films?
  • What does it mean to be "complected"?
  • What's more important: data or behavior?
  • Why separate data from behavior?
  • The simple domain of batch processing.
  • The dark magic of hidden side effects.
  • What lasts longer: data or your application?
  • Representation vs operations in an information domain.
  • Common kinds of functions.
  • How do schemas fit in?
  • Where does I/O fit in?
  • Rationale for organizing your namespaces.
  • The horror of code organization in Java.
  • The stability of pure information models.
  • What is language imposed complexity?

Selected quotes:

  • "It's been a few years for us, but it could have been a few days if you're really on a binge on this podcast!"
  • "The biggest and most important difference between object-oriented programming and functional programming is the relationship between data and behavior. Functional programming keeps those separate, whereas object-oriented programming likes to mix them together into classes."
  • "When I want to play a piece, does the board know how to play pieces onto itself? Or, does a piece know how to place itself on the board?"
  • "You can't just have the functionality sit on its own. It has to be attached."
  • "I arrived at a point where I thought, 'What am I doing?!'"
  • "All kinds of different scripts that operate on the same data file don't need to know about each other at all."
  • "I'm just going to get the name attribute from the Person object, right? You don't know. Am I getting a field, or am I getting some magical overloaded getter thingy that does a bunch of side effects?"
  • "Data is simple, and data will almost certainly outlast your application. Often, the data that your application deals with came from somewhere else in the first place."
  • "This reminds me of the fun abomination known as object-relational mapping where you take the data that was there before your program and you pour it somehow into your objects, then you do something with it, and then you pour it back out into the database. Why is this such a hard problem? Because it's a hard thing to do! It's something that doesn't make sense."
  • "In OO, there are way more dimensions of potential organization, so therefore, more things for a software development team to fight over."
  • "The only place you can put functionality in object-oriented language is attaching it to classes."
  • "In Clojure, you don't have a lot to fight over in your bike shedding sessions."
  • "When you're talking about which object to put it in, you're not actually talking about your problem. It's a problem that is introduced by the tool choice, not by the domain of the problem."
  • "Because they're separated, you get reuse. You get data composition and behavioral composition as separate kinds of composition--because they don't often happen the same way."

"I think the lack of reusability comes in object-oriented languages, not functional languages. Because the problem with object-oriented languages is they’ve got all this implicit environment that they carry around with them. You wanted a banana but what you got was a gorilla holding the banana and the entire jungle.

If you have referentially transparent code, if you have pure functions all the data comes in its input arguments and everything goes out and leave no state behind it’s incredibly reusable."

~ Joe Armstrong in "Coders at Work"

Links:

  continue reading

118 에피소드

Artwork

Ep 096: Gaming Data

Functional Design in Clojure

72 subscribers

published

icon공유
 
Manage episode 383448892 series 2463849
Christoph Neumann and Nate Jones, Christoph Neumann, and Nate Jones에서 제공하는 콘텐츠입니다. 에피소드, 그래픽, 팟캐스트 설명을 포함한 모든 팟캐스트 콘텐츠는 Christoph Neumann and Nate Jones, Christoph Neumann, and Nate Jones 또는 해당 팟캐스트 플랫폼 파트너가 직접 업로드하고 제공합니다. 누군가가 귀하의 허락 없이 귀하의 저작물을 사용하고 있다고 생각되는 경우 여기에 설명된 절차를 따르실 수 있습니다 https://ko.player.fm/legal.

Each week, we discuss a different topic about Clojure and functional programming.

If you have a question or topic you'd like us to discuss, tweet @clojuredesign, send an email to [email protected], or join the #clojuredesign-podcast channel on the Clojurians Slack.

This week, the topic is: "playing games with data." We go back to start and play through a composition strategy to see where we land.

Our discussion includes:

  • The return of Tic Tac Toe. It's back!
  • The biggest difference between object-oriented and functional composition.
  • Can a game board play its own pieces? Isn't that the stuff of horror films?
  • What does it mean to be "complected"?
  • What's more important: data or behavior?
  • Why separate data from behavior?
  • The simple domain of batch processing.
  • The dark magic of hidden side effects.
  • What lasts longer: data or your application?
  • Representation vs operations in an information domain.
  • Common kinds of functions.
  • How do schemas fit in?
  • Where does I/O fit in?
  • Rationale for organizing your namespaces.
  • The horror of code organization in Java.
  • The stability of pure information models.
  • What is language imposed complexity?

Selected quotes:

  • "It's been a few years for us, but it could have been a few days if you're really on a binge on this podcast!"
  • "The biggest and most important difference between object-oriented programming and functional programming is the relationship between data and behavior. Functional programming keeps those separate, whereas object-oriented programming likes to mix them together into classes."
  • "When I want to play a piece, does the board know how to play pieces onto itself? Or, does a piece know how to place itself on the board?"
  • "You can't just have the functionality sit on its own. It has to be attached."
  • "I arrived at a point where I thought, 'What am I doing?!'"
  • "All kinds of different scripts that operate on the same data file don't need to know about each other at all."
  • "I'm just going to get the name attribute from the Person object, right? You don't know. Am I getting a field, or am I getting some magical overloaded getter thingy that does a bunch of side effects?"
  • "Data is simple, and data will almost certainly outlast your application. Often, the data that your application deals with came from somewhere else in the first place."
  • "This reminds me of the fun abomination known as object-relational mapping where you take the data that was there before your program and you pour it somehow into your objects, then you do something with it, and then you pour it back out into the database. Why is this such a hard problem? Because it's a hard thing to do! It's something that doesn't make sense."
  • "In OO, there are way more dimensions of potential organization, so therefore, more things for a software development team to fight over."
  • "The only place you can put functionality in object-oriented language is attaching it to classes."
  • "In Clojure, you don't have a lot to fight over in your bike shedding sessions."
  • "When you're talking about which object to put it in, you're not actually talking about your problem. It's a problem that is introduced by the tool choice, not by the domain of the problem."
  • "Because they're separated, you get reuse. You get data composition and behavioral composition as separate kinds of composition--because they don't often happen the same way."

"I think the lack of reusability comes in object-oriented languages, not functional languages. Because the problem with object-oriented languages is they’ve got all this implicit environment that they carry around with them. You wanted a banana but what you got was a gorilla holding the banana and the entire jungle.

If you have referentially transparent code, if you have pure functions all the data comes in its input arguments and everything goes out and leave no state behind it’s incredibly reusable."

~ Joe Armstrong in "Coders at Work"

Links:

  continue reading

118 에피소드

Alle Folgen

×
 
Loading …

플레이어 FM에 오신것을 환영합니다!

플레이어 FM은 웹에서 고품질 팟캐스트를 검색하여 지금 바로 즐길 수 있도록 합니다. 최고의 팟캐스트 앱이며 Android, iPhone 및 웹에서도 작동합니다. 장치 간 구독 동기화를 위해 가입하세요.

 

빠른 참조 가이드

탐색하는 동안 이 프로그램을 들어보세요.
재생