플립 플랍(프로그래밍)
Flip-flop (programming)컴퓨터 프로그래밍에서 플립 플랍은 거의 사용되지 않는 구문 구조이며, 첫 번째 조건이 충족되면 부울을 false에서 true로, 두 번째 조건이 충족되면 false로 되돌릴 수 있습니다.이 구문은 Perl 및 [2]Ruby 프로그래밍 언어로[1] 사용할 수 있습니다.sed와 [1]awk에서도 비슷한 논리를 사용할 수 있습니다.
제1조건 A와 제2조건 B의 플립 플랍은 과거 어느 시점에서 A가 참이고 B가 항상 거짓인 한, 전자는 영속적인 상태를 가지며 A가 참이 아니더라도 참이기 때문에 "만일 경우"와 동등하지 않다.
예
다음 Ruby 코드는 숫자 4 ~6을 인쇄합니다.
(1.10). 각각 x는 x if (x == 4 )를 대입한다.x == 6) 끝
".."의 첫 번째 인스턴스는 범위 연산자로, 정수 1 ~ 10의 열거를 생성합니다.두 번째 ".."는 플립 플랍 연산자로, 플립 플랍 [3]오퍼레이터라고도 합니다.숫자 5는 "x == 4"와 "x == 6"이 모두 거짓인 경우에도 인쇄됩니다.이 식은 "x == 4"가 이전 반복에서 참이었고 "x == 6"이 그 시점에서 참이 된 적이 없다는 것을 기억하기 때문입니다.
함정
플립 플랍 연산자는 현재 상태를 저장해야 합니다.프로그래머가 이 상태가 저장되는 위치와 그 수명을 명시적으로 정의할 수 있는 방법은 없습니다.여러 스레드 또는 재귀 함수에 동일한 코드가 사용되는 경우 수명에는 차이가 있습니다.플립 플랍 연산자 상태에 대한 이러한 동시 액세스는 프로그래밍 언어에 따라 정의되지 않은 동작 또는 적어도 놀라운 결과를 초래할 수 있습니다.예를 들어 Perl에서는 각 플립플롭 연산자가 모든 [4]스레드 간에 공유되는 고유한 상태를 가지며 다른 프로그래밍 언어도 동일한 상태를 수행합니다.
이 제한을 해결하려면 플립 플랍 연산자를 다음과 같이 매개 변수화한 추상 데이터 유형으로 모델링해야 합니다.
- 플립 플랍을 켤지 여부를 나타내는 술어입니다.
- 플립 플랍을 끌지 여부를 나타내는 술어.
이 플립플롭 데이터 유형은 상태를 쿼리하는 동시에 업데이트하는 기능을 제공합니다.이 함수는 스위칭 술어가 의존하는 실제 데이터를 가져와 필요에 따라 해당 데이터를 2개의 술어에 전달합니다.
이러한 고유한 복잡성 때문에 플립 플랍 연산자를 채택한 프로그래밍 언어는 거의 없습니다.
레퍼런스
- ^ a b "Perl operators and precedence". Retrieved 2016-10-21.
- ^ Nithin Bekal (2014-11-21). "Flip Flop Operator in Ruby".
- ^ "PyCon Australia Lightning talk: Flip Flop Operators (flip floperators)". 2018-08-26.
- ^ "Range Operator in Perl". 2020-08-16.