본문 바로가기

Programming/Programming Language

Scala Advantages & Disadvantages 스칼라 장단점, 객체지향, 함수적, 절차지향적, 프로그래밍언어

Scala Advantages & Disadvantages 스칼라 장단점, 객체지향, 함수적, 절차지향적, 프로그래밍언어




원글 보기 ( 여기 )
Origin article ( Here )


그냥 슥슥 읽고 지나가면 될듯..
독해하다 말았음
별 도움 안되는 글을 휘황찬란하게..



1. Objective 목적


In this Scala Tutorial, we will learn Scala Advantages & Disadvantages. A great power comes with knowledge of what you can or can’t do with what you have. So, let’s discuss the places where Scala wins and fails. But remember, overall, a language always wins.

 이 스칼라 튜토리얼에서, 우린 스칼라의 장점과 단점을 배울 것이다. 네가 갖고 있는 것으로 할수 있는 것/ 없는 것을 아는 것은 큰 힘이 될 것이다.

Here, we start with the Scala benefits and limitations.

여기, 스칼라의 장점과 제한으로 시작하자

Scala Advantages & Disadvantages | Pros and Cons of Scala

Scala Advantages & Disadvantages | Pros and Cons of Scala

2. Scala Advantages & Disadvantages 

스칼라의 장점과 단점


A. Scala Advantages 장점


What makes Scala special? What sets it apart from other languages? In Scala Advantages, we will explore the answers to these questions. So, let’s discuss them one by one:


 어떤점이 스칼라를 특별하게 할까? 다른 언어랑 어떤게 다를까? 스칼라의 장점에서는 이 질문들에 답을 찾을 것이다. 하나씩 보자.

Scala Advantages & Disadvantages | Pros and Cons of Scala

Scala Advantages

i. Easy to Pick Up 고르기가 쉽다.


Coming from an object-oriented background with Java or another such language, Scala’s syntax appears familiar. This makes it easier to pick up than languages like Haskell. Also, it is much more concise than Java. Where Java would need nine lines of code to perform an operation, Scala would only take about three, in most cases. This aids productivity.


 객체지향인 자바나 다른 언어에서 와서 스칼라는 익숙하다. 하스켈과 같은 언어보다 선택하기 쉽도록 해준다. 또한, 자바보다 훨씬 간결하다. 자바에서 코드 9줄이 필요한 곳에서, 스칼라는 보통 3줄이면 된다. 이런 식으로 생산성을 올려준다.


ii. Pretty Good IDE Support 좋은 개발환경의 서포트


It is one of the most popular Scala Advantages. Many functional language communities usually favor editors like Emac or Vim. But contrary to what many developers think, Scala has a pretty good lineup of IDEs:


 스칼라의 장점중 가장 유명한 것중 하나이다. 많은 함수적인 언어들이 이맥스나 빔과 같은 에디터를 선호한다. 하지만 많은 개발자들이 생각하는 것과 대조적으로 스칼라는 매우 좋은 IDE들을 갖고 있다.


a. IntelliJ IDEA 인텔리J


Most developers consider this to be the best IDE for Scala. It has great UI, and the editor is pretty good. However, the Scala presentation compiler may unusually be slow to load an auto-complete list working with a relatively large project. This is because they rewrote the compiler to integrate with their platform. You will also need to purchase the ultimate edition if you want to be able to handle all your works with IntelliJ. It isn’t completely free and open-source. The Ultimate version also provides support for Less/Sass.

 

 대부분의 개발자들이 스칼라에 가장 좋은 IDE 라고 여긴다. 좋은 UI를 가지고 있고, 에디터도 정말 좋다. 하지만 스칼라 컴파일러를 보여주는 것에서 큰 프로젝트는 가끔씩 자동완성 리스트를 보여줄 때 로드가 오래 걸린다. 이건 스칼라 플랫폼과 결합하기 위해 컴파일러를 다시 쓰기 때문이다. 또한 인텔리J 의 전체판을 쓰려면 따로 구매를 해야한다. 완전 무료나 오픈소스가 아니다. 구매한 얼티밋버전은 Less/Sass 서포트를 해준다.


To see how to set it up on your machine, refer to Scala Environment Setup. 스칼라 개발환경 셋업 방법

Scala Advantages & Disadvantages | Pros and Cons of Scala

Scala Advantages – IntelliJ IDEA

b. Scala IDE 스칼라 IDE


The Scala IDE is based on Eclipse, as it says in the image. It provides more efficient support for Scala than does IntelliJ. It is able to handle big projects with accuracy and efficiency compared to other IDEs. Sometimes, you may have to deal with false positives, hiccups, and rare bugs. Other limitations include medieval block selection, and that changing the workspace loses the configuration.

 스칼라 IDE는 이미지에서 볼수 있듯이, 이클립스 기반이다. 이건 인텔리J 보다 스칼라를 위한 효율적인 서포트를 제공한다. 다른 IDE들에 비해서 큰 프로젝트를 정확하고 효율적으로 핸들링 할수 있게 해준다. 가끔씩 버그나 딸꾹질? 등을 손봐야 될 것이다. 다른 제한사항으로는 중간 블록 선택?이 있고, 작업공간 변경 시 구성이 손실된다.

Scala Advantages

Scala Advantages – Scala IDE

c. Emacs (ENSIME) 이맥스


This provides the richest support for Scala in Emacs and is more modern than Vi. It supports a wide range of languages and frameworks, and it is possible to customize it and build our own version.

 스칼라에 VI보다 현대적이고 풍부한 지원을 제공한다. 다양한 프레임웤과 언어를 지원하고, 너의 버전으로 커스터마이즈 할 수 있다.


d. Atom (ENSIME) 아톰


While not as geeky as Emacs/Vi, it is a good editor built on top of web technologies. However, you may have to face more bugs than in Emacs.


Others include Vi, Sublime, and Visual Studio Code.

 이맥스/VI 처럼 개발자스럽지는 않지만, 웹 기반 최고의 에디터이다. 하지만 이맥스보다 더 많은 버그를 접하게 될 것이다.


그 외에는 Vi, Sublime, Visual Studio Code 가 있다.


Let’s Explore Scala vs Java – Feature wise Comparison Guide 스칼라와 자바 비교


iii. Scalability 확장성


‘Scala’ is a portmanteau of ‘scalable’ and ‘language’, as we’ve discussed. So, scalability is definitely one of biggest Scala advantages. This means we can use it to build highly concurrent, fault-tolerant systems. For this, we can use the multiagent concurrency model like in Language Erlang in Akka.

 스칼라는, 얘기해왔던 것처럼 '확장성' 과 '언어'의 합성어이다. 그래서 확장성은 스칼라의 가장 큰 장점 중 하나이다. 이건 우리가 fault-tolerant 시스템에서 동시적으로 빌드를 하며 사용할 수 있는 것을 의미한다. 이를 위해, 우리는 멀티에이전트 동시성 모델 (Erlang, Akka) 언어 와 같은 것을 사용할 수 있다.


iv. Mixins, Open Classes, and Monkey Patching


Some other facilities you will get with Scala are mixins(traits), open classes, and monkey patching. Using mixins, you can carry out multiple inheritances.

 스칼라에서 얻는 몇가지 다른 점들은 mixins(traits), open classes, 그리고 monkey patching 이다. mixins를 이용하여, 다중 상속을 할 수 있다.


v. Great for Data Analytics 데이터 분석에 좋다


Scala can be a great choice for data analytics with support from tools like Apache Spark, among others. A lot of huge companies make use of Scala for their products and services.

Refer to Scala Career Opportunities for a brief list. 스칼라 직업군

 스칼라는 아파치 스파크와 같이 데이터 분석을 위해 좋은 선택이다. 많은 큰 회사들이 그들의 제품과 서비스를 위해 스칼라를 쓴다


vi. Highly Functional 높은 기능성


Scala is highly functional in paradigm, is one of the unique Scala advantages. It is a language that treats its functions as first-class citizens. This means we can say that it has first-class functions. In other words, it lets us pass functions as arguments to other functions, and to return them as values from other functions. It also lets them assign them to variables or store them in data structures. Hmm, this seems pretty much like everything is an object in Python. Ring a bell?

And if you face problems trying to solve one functionally, you can always switch to object-oriented. Like we’ve seen in collections like Sets and Maps, there is a mutable collections library to complement immutable collections in Scala.


vii. Inherently Immutable Objects


If you’ve worked with Java, you have faced quite some thread-safety concerns with your applications. Scala reduces these risks.


viii. Scala is Fun! 재밌다!


What is life without a challenge to beat, a purpose to pursue? Scala puts engineers face-to-face with challenges in an entertaining, yet teachable way.
And if you must encode documents in your products, Scala will let you do so use XML (Extensible Markup Language).


ix. Better Developers 더 나은 개발자


Good Scala developers also do better with Java. They pick up programming practices like functional programming and can apply those to other languages like Java Programming Language.

Top 16+ Reasons to Learn Scala Programming Language


x. Better Quality Code 더 나은 품질의 코드


With functional programming, you are more likely to end up with fewer lines of code and fewer bugs. This means higher productivity and higher quality.
We complete all important Scala Advantages, let’s move to Disadvantages of Scala Programming Language.



B. Scala Disadvantages 스칼라의 단점


What keeps Scala from reaching the top? What issues could you face if you choose it as the language for your next project? The answers are a bit subtler:

 어떤점이 스칼라를 정상에 못오르게 할까? 다음 프로젝트에 스칼라를 고르면 어떤 문제가 생길 수 있을까? 답들은 모호하다.

  1. Since with Scala, you can always switch back to an object-oriented paradigm. So, it doesn’t force you to think functionally. You can think of this as a double-edged sword.
  2. Being a hybrid of functional and object-oriented can sometimes make type-information a bit harder to understand.
  3. Since it runs on the JVM, it has no true tail-recursive optimization. As a workaround, you can use the @tailrec annotation for partial benefits.
  4. Scala has a limited developer pool. But while it is easier to find Java developers in numbers, not every Java developer has what it takes to code efficiently in Scala.
 1. 스칼라를 쓰면, 넌 언제든지 객지지향 패러다임으로 옮겨갈 수 있다. 그래서 이건 함수적인 것을 강요하지 않는다. 이것을 양날의 검으로 생각할 수 있다.
 2. 함수적/객체지향적을 하이브리드로 가져가는 것은 가끔 이해하기 어려운 type-information을 만들 수 있다.
 3. JVM에서 돌아가기 때문데, 이건 tail-recursive 최적화가 없다. 해결방법으로, 넌 @tailrec 주석에서 부분적인 이익을 얻을 수 있다.
 4. 스칼라는 개발자 풀이 작다. 하지만, 자바 개발자는 찾기 쉬운 반면에 모든 자바 개발자가 스칼라의 코드 효율성을 갖고 있지는 않다.


Do You Know Why Scala is Object-Oriented Programming Langauge? 왜 스칼라가 객체지향적 언어인가?


3. Conclusion 결론


Hence, we studied Scala Benefits and Limitations and we have tried to cover a broad view of it in our Scala Advantages and Disadvantages Tutorial. Which language doesn’t? That said, each language is beautiful. And if Scala makes for what it takes to run your project, you must definitely explore it, give it a try. If you have any queries regarding Scala advantages and limitations, please comment.
 지금까지, 우린 스칼라의 이점과 제한점을 배워봤고, 스칼라의 장점과 단점을 넓게 보려했다. 어떤 언어가 안그렇겠는가? 각 언어는 아름답다. 그리고 너의 프로젝트에 스칼라가 필요하다면, 분명 공부해봐야한다, 시도해봐라. 스칼라의 장/단점에 질문이 있으면 코멘트를 남겨라



Something you might like...?



2018/12/20 - [Programming/Java] - How to convert file to byte array (byte[]) example, 파일 객체 바이트로 변환하기 예제코드, java/cpp/c++/scalar


2018/12/18 - [Programming/Java] - How to access controller from existing Pane in JavaFX, pane에서 해당 controller로 접근하기, java/cpp/c++/fx/gui


2018/12/13 - [Computer/Linux] - How to check ongoing live process on Linux cmd, 리눅스 커맨드창에서 어떤 프로세스가 실행중인지 확인하기, java, ubuntu, cpp


2018/12/13 - [Programming/Java] - How to change color theme in JavaFx example, 자바Fx 전체적인 색 테마 바꾸기 예제, ui, 디자인



2018/12/21 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #45 buildPalindrome. Algorithm, 알고리즘, Codefights, CodeSignal, 코드파이트, 코드시그널, 예제, example, c++ java c# scalar

2018/12/20 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #44 findEmailDomain. Algorithm, 알고리즘, Codefights, CodeSignal, 코드파이트, 코드시그널, 예제, example, c++ java c# scalar

2018/12/17 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #43 isBeautifulString. Algorithm, 알고리즘, Codefights, CodeSignal, 코드파이트, 코드시그널, 예제, example, c++ java c# scalar

2018/12/16 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #42 bishopAndPawn. Algorithm, 알고리즘, Codefights, CodeSignal, 코드파이트, 코드시그널, 예제, example, c++ java c# scalar

2018/12/14 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #41 digitDegree. Algorithm, 알고리즘, Codefights, CodeSignal, 코드파이트, 코드시그널, 예제, example, c++ java c# scalar

2018/12/12 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #40 longestDigitsPrefix. Algorithm, 알고리즘, Codefights, CodeSignal, 코드파이트, 코드시그널, 예제, example, c++ java c# scalar


2018/12/16 - [Life/Health care] - L-Arginine 아르기닌 usage/side effects/dosage 효능/부작용/성인,소아 용법(2)

2018/12/02 - [Life/Health care] - Maca 마카 usage/side effects/dosage 효능/부작용/용법

2018/12/03 - [Life/Health care] - Lecithin 레시틴 usage/side effects/dosage 효능/부작용/용법