[PYTHON] Une introduction à la programmation fonctionnelle pour améliorer l'efficacité du débogage en 1 minute

surligner

  1. Que se passe-t-il lorsque vous apprenez la programmation fonctionnelle
  2. Comment pratiquer la programmation fonctionnelle
  3. Quelles sont les similitudes entre la programmation fonctionnelle et orientée objet?

Que se passe-t-il lorsque vous apprenez la programmation fonctionnelle

Les soucis suivants sont réduits et l'efficacité du débogage est améliorée.

"Ce drapeau devrait être vrai, mais il est faux!" "Je ne sais pas où est la cause du bug." "Si vous le résolvez, il peut y avoir un problème quelque part."

Comment pratiquer la programmation fonctionnelle

Concevez les deux fonctions suivantes exactement séparément et augmentez la zone pure pour réduire la zone sale.

1. Fonction pure

Une fonction qui renvoie toujours le même résultat pour le même argument et n'affecte pas la portée en dehors de la fonction.

2. Fonction sale

Une fonction qui renvoie différents résultats avec le même argument ou affecte la portée en dehors de la fonction

Dites-moi plus précisément

Ce qui suit est un exemple. Peu importe si vous pouvez facilement et clairement distinguer les choses pures et sales, comme séparer les paquets et les fichiers, ou en nommant, et vous pouvez rendre la zone pure relativement épaisse.


class Pure:
	"""
Une classe de fonctions pures
Faire cette graisse
	"""
	def plus(self,a,b):
		return a + b
	def minus(self,a,b):
		return a - b


class Dirty:
	"""
Classe groupée de fonction sale
	=Une classe avec une fonction qui change l'état
Réduisez cela
	"""
	def __init__(self):
		self.my_number = 0
	def plus(self,a):
		self.my_number = self.my_number + a
		return self.my_number
	def minus(self,b):
		self.my_number = self.my_number - 1
		return self.my_number


Pourquoi pouvez-vous réduire le temps de débogage en épaississant la zone pure?

Il y a quatre raisons.

  1. Les fonctions pures n'effectuent pas de modifications de variables involontaires
  2. Vous n'avez pas à vous soucier de l'impact sur les autres lors de la modification d'une fonction pure (appliquez simplement la fonction correctement)
  3. S'il s'agit d'une fonction pure, même si une fonction devient gonflée, elle peut être facilement divisée et réutilisée si elle est maintenue pure.
  4. C'est une zone sale qui est sujette aux bugs, donc si vous gardez cette petite, il sera plus facile de frapper les bogues.

Qu'est-ce qu'un «langage» fonctionnel?

Un langage facile à faire de la programmation fonctionnelle. Il convient à l'écriture avec de nombreux langages qui gèrent des fonctions ou avec des fonctions pures. La programmation fonctionnelle elle-même peut être VB ou autre.

Quelles sont les similitudes et les différences entre la programmation fonctionnelle et orientée objet?

La chose la plus spécifique en commun est de minimiser l'impact d'une zone sur une autre. L'orientation objet cherche à atteindre cet objectif par l'encapsulation, le polymorphisme et l'héritage. La programmation fonctionnelle essaie d'engraisser une fonction pure comme celle ci-dessus pour minimiser le problème des changements d'état.

Ce qui suit peut être biaisé d'un point de vue très personnel Les deux ne sont pas des concepts contradictoires, mais des concepts de coexistence, mais l'orientation de l'objet est habituellement faite sur la prémisse de changer l'état de nombreux objets, donc l'objectif ci-dessus "une certaine zone" Il est difficile de minimiser l’impact du has sur d’autres domaines. De plus, je pense que l'orientation objet est moins susceptible de produire des résultats que les coûts d'apprentissage et de conception par rapport à la programmation fonctionnelle. Donc, tout en gardant à l'esprit le compromis avec le temps, je fais un certain nombre de classifications, mais je ne fais attention qu'à Pure ou Dirty.

Résumé

Le cœur de la programmation fonctionnelle est d'engraisser le royaume pur. La programmation fonctionnelle est une technologie délicieuse et polyvalente qui est très efficace pour ses faibles coûts d'apprentissage.

Recommended Posts

Une introduction à la programmation fonctionnelle pour améliorer l'efficacité du débogage en 1 minute
Une introduction à la programmation Python
Une introduction à la programmation orientée objet pour les débutants par les débutants
Introduction à Private TensorFlow
Une introduction à l'apprentissage automatique
AOJ Introduction à la programmation Sujet n ° 7, Sujet n ° 8
Je souhaite améliorer l'efficacité avec Python même dans les systèmes expérimentaux (2) RS232C et pySerial
AOJ Introduction à la programmation Sujet n ° 5, Sujet n ° 6
Je souhaite améliorer l'efficacité avec Python même dans un système expérimental (1) Installer Anaconda avec Chocolatey
Une introduction à l'API de socket moderne pour apprendre en C
Introduction à l'optimisation bayésienne
Programmation pour combattre dans le monde ~ 5-1
Programmation pour combattre dans le monde ~ 5-5,5-6
Programmation fonctionnelle dans Python Project Euler 1
Programmer pour combattre dans le monde 5-3
Une introduction à Mercurial pour les non-ingénieurs
[Introduction à Python3 Jour 1] Programmation et Python
Programmation fonctionnelle dans Python Project Euler 3
Programmation pour combattre dans le monde - Chapitre 4
Programmation fonctionnelle dans Python Project Euler 2
Premiers pas avec Python pour les non-ingénieurs
Une alternative à `pause` en Python
Programmation pour combattre dans le monde ~ 5-2
[Tutoriel Python] Une introduction facile à Python
Je veux améliorer l'efficacité avec Python même dans un système expérimental (3) Je veux faire quelque chose comme Excel avec Pandas
Une introduction à OpenCV pour l'apprentissage automatique
Réseau neuronal récursif: une introduction à RNN
Une introduction à Python pour l'apprentissage automatique
Essayez un tube de programmation fonctionnel en Python
Introduction à docker Création d'un environnement ubuntu dans ubuntu
Introduction aux vecteurs: Algèbre linéaire en Python <1>
Introduction à la vérification de l'efficacité Chapitre 1 écrit en Python
Une introduction à l'orientation des objets - Donnez à un objet un enfant.
Une introduction à Python pour les programmeurs en langage C
Introduction au Deep Learning (1) --Chainer est expliqué d'une manière facile à comprendre pour les débutants-