program story

회사에서 애플리케이션 언어로 C ++, C # 또는 Java를 사용하는 경우 Perl, Python, Ruby를 배우는 이유는 무엇입니까?

inputbox 2020. 11. 13. 08:11
반응형

회사에서 애플리케이션 언어로 C ++, C # 또는 Java를 사용하는 경우 Perl, Python, Ruby를 배우는 이유는 무엇입니까?


C ++, C #, Java 개발자가 왜 동적 언어를 배우고 싶어하는지 궁금합니다.

회사가 주 개발 언어를 C ++ / C # / Java에서 동적 언어로 전환하지 않을 것이라고 가정하면 동적 언어에 어떤 용도가 있습니까?

몇 년 동안 사용해 온 정적 언어를 사용하는 것보다 며칠 학습 후에 동적 언어로 어떤 도우미 작업을 더 빠르게 또는 더 잘 수행 할 수 있습니까?

최신 정보

처음 몇 개의 응답을 본 후 두 가지 문제가 있음이 분명합니다. 나의 주된 관심사는 고용주에게 비용으로 정당화 될 수있는 것입니다. 즉, 고용주가 동적 언어 학습에 자금을 지원할 수있는 이유를 찾고 있습니다. 직원이 더 넓은 시야를 가질 것이라는 명백한 것 외에도 고용주는 일반적으로 "실제"혜택을 찾고 있습니다.


개발중인 주요 소프트웨어의 일부가 아닌 몇 가지 빠른 작업이 자주 발생합니다. 때때로 작업은 일회성입니다. 즉,이 파일을 데이터베이스와 비교하고 차이점을 알려주십시오. Perl / Ruby / Python에서 텍스트 구문 분석을 수행하는 것이 Java 또는 C #보다 훨씬 쉽습니다 (부분적으로는 정규 표현식을 사용하기가 훨씬 쉽기 때문입니다). Perl / Ruby / Python을 사용하여 텍스트 파일을 구문 분석하는 데 훨씬 더 적은 시간이 소요될 것입니다 (또는 vbscript가 주름진 다음 데이터베이스에로드하는 것이 Java / C # 프로그램을 작성 하거나 수행하는 것보다 훨씬 적습니다 . 손.

또한 대부분의 동적 언어는 텍스트를 쉽게 구문 분석하기 때문에 코드 생성에 적합합니다. 물론 최종 프로젝트는 C # / Java / Transact SQL이어야하지만 100 번 잘라내어 붙여넣고, 오류를 찾고, 100 번 잘라내어 붙여 넣는 대신 코드 생성기를 사용하는 것이 더 쉽습니다 (항상 그런 것은 아님).

최근 직장에서의 예는 하나의 회계 시스템에서 회계 시스템으로 데이터를 가져와야한다는 것입니다. 시스템에는 가져 오기 형식이 있지만 이전 시스템은 완전히 다른 형식을 사용했습니다 (일부 항목이 일치해야하지만 고정 너비). 작업은 데이터를 계속해서 마이그레이션하는 프로그램을 만드는 것이 아닙니다. 데이터를 우리 시스템으로 밀어 넣은 다음 계속 유지하는 것입니다. 따라서 우리는 C # 및 SQL Server 상점이지만 Python을 사용하여 데이터를 응용 프로그램에서 가져올 수있는 형식으로 변환했습니다. 궁극적으로 내가 파이썬을 사용하는 것은 중요하지 않으며 데이터가 시스템에 있다는 것은 중요합니다. 제 상사는 꽤 감명 받았습니다.

자주 사용되는 동적 언어는 테스트입니다. Python / Perl / Ruby 프로그램을 만들어 웹 서비스에 연결하고 이에 대해 일부 데이터를 던지는 것이 동등한 Java 프로그램을 만드는 것보다 훨씬 쉽습니다. 또한 파이썬을 사용하여 명령 줄 프로그램에 맞서고, 많은 가비지 (하지만 여전히 유효한) 테스트 데이터를 생성하는 등 매우 쉽게 할 수 있습니다.

동적 언어가 큰 또 다른 점은 코드 생성입니다. C # / C ++ / Java 코드 생성. 다음은 몇 가지 예입니다.

내가 자주 보는 첫 번째 코드 생성 작업은 시스템에서 상수를 유지하기 위해 동적 언어를 사용하는 사람들입니다. 많은 열거 형을 직접 코딩하는 대신 동적 언어를 사용하여 텍스트 파일을 상당히 쉽게 구문 분석하고 열거 형으로 Java / C # 코드를 만들 수 있습니다.

SQL은 완전히 다른 볼 게임이지만 종종 함수를 수행하는 대신 100 번 잘라내어 붙여 넣으면 더 나은 성능을 얻을 수 있습니다 (실행 계획을 캐싱하거나 함수에 복잡한 논리를 넣어서 대신 행 단위로 이동하게되므로 세트). 실제로 테이블 정의를 사용하여 특정 저장 프로 시저를 자동으로 만드는 것은 매우 유용합니다.

항상 코드 생성기를 구입하는 것이 좋습니다. 하지만 그렇지 않더라도 잘라 내기 / 붙여 넣기에 시간을 소비하는 것이 더 재미 있을까요? 아니면 Perl / Python / Ruby 스크립트를 한 번 만든 다음 코드를 생성하는 것이 더 재미 있나요? 코드를 작성하는 데 몇 시간이 걸리지 만 코드 생성기를 만드는 데 더 적은 시간이 걸리면 한 번 사용하더라도 시간과 비용을 절약 할 수 있습니다. 한 번 코드를 작성하는 것보다 코드 생성기를 만드는 데 더 오래 걸리지 만 코드를 두 번 이상 업데이트해야한다는 것을 알고 있다면 여전히 의미가있을 수 있습니다. 코드를 작성하는 데 2 ​​시간이 걸리고 생성기를 수행하는 데 4 시간이 걸리지 만 생성기를 만드는 것이 분명히 더 나은 것보다 5 ~ 6 번 더 코드를 작성해야한다는 것을 알고 있습니다.

또한 Java / C # / C / C ++보다 동적 언어를 사용하는 것이 더 쉽습니다. 특히 정규 표현식이 떠 오릅니다. Perl에서 정규식을 사용하기 시작하고 그 가치를 깨닫는 경우, 이전에 해본 적이없는 경우 갑자기 Java 정규식 라이브러리를 사용하기 시작할 수 있습니다. 그렇다면 다른 것이있을 수 있습니다.

동적 언어에 적합했을 작업의 마지막 예를 하나 남겨 드리겠습니다. 내 직장 동료는 파일로 가득 찬 디렉토리를 가져 와서 다양한 고객을 위해 다양한 CD로 구워야했습니다. 고객이 몇 명 있었지만 파일이 많았 기 때문에 고객이 무엇인지 확인해야했습니다. 그는이 작업을 수작업으로 수행했습니다 .... Java / C # 프로그램은 시간을 절약 할 수 있었지만 한 번은 모든 개발 오버 헤드로 인해 그만한 가치가 없습니다. 그러나 Perl / Python / Ruby에서 무언가를 함께 두드리는 것은 아마도 그만한 가치가있을 것입니다. 그는 그것을하기 위해 몇 시간을 보냈다. 각 파일을 검사하는 Python 스크립트를 작성하고, 어떤 고객에게 연결되는지 확인한 다음 파일을 적절한 위치로 이동하는 데는 하나도 걸리지 않았을 것입니다. 다시 표준 작업의 일부가 아닙니다. 그러나 과제는 일회성으로 나타났습니다. 직접하는 것이 더 낫습니까? Java / C #이 작업을 수행하도록하는 데 더 많은 시간을 소비하거나 Python / Perl / Ruby에서 작업을 수행하는 데 훨씬 적은 시간을 소비합니다. C 또는 C ++를 사용하는 경우 C 또는 C ++ 프로그래밍의 추가 문제 (포인터, 배열 경계 검사 없음 등)로 인해 요점이 훨씬 더 극적입니다.


미국 영어 사용자가 다른 언어를 배우기 위해 어떤 용도로 사용되는지 물어 보면서 질문을 머리 속에 돌리겠습니다.

우리가 말하는 언어 (그리고 우리가 프로그래밍하는 언어)는 우리가 생각하는 방식을 알려줍니다. 이는 C ++ 대 javascript 대 lisp와 같은 기본 수준에서 또는 루비 구조가 "실제 작업"에서 솔루션을위한 유레카 순간을 제공하는 구현 수준에서 발생할 수 있습니다.

당신의 실제 직업에 대해 말하자면, 시장이 남쪽으로 가고 당신의 고용주가 당신을 "적절한 규모"로 결정한다면, 그가 당신의 제한된 언어 대신 수십 개의 언어로 소프트웨어를 작성했기 때문에 융통성있는 사람과 어떻게 경쟁 할 것이라고 생각하십니까? 노출? 모든 것이 똑같 으면 답은 분명하다고 생각합니다.

마지막으로, 당신은 프로그래밍을 좋아하기 때문에 생계를 위해 프로그래밍합니다.


아직 아무도 언급하지 않은 것 같습니다. 새로운 언어를 배우는 것은 재미있을 수 있습니다! 확실히 그것은 새로운 것을 시도 할 충분한 이유입니다.


저는 주로 Java와 C #으로 프로그래밍하지만보다 원활한 배포, OS 작업 시작, 자동화 된보고, 일부 로그 구문 분석 등을 지원하기 위해 동적 언어 (ruby / perl)를 사용합니다.

짧은 시간 동안 Ruby 또는 Perl을 학습하고 실험 한 후 데이터 형식을 변경하거나 로그에서 정보를 가져올 수있는 정규식 조작 스크립트를 작성할 수 있습니다. 빠르게 작성할 수있는 작은 ruby ​​/ perl 스크립트의 예는 매우 큰 로그 파일을 구문 분석하고 사람이 읽을 수있는 형식 또는 csv 형식으로 관심있는 몇 가지 이벤트 만보고하는 스크립트입니다.

또한 다양한 프로그래밍 언어에 대한 경험이 있으면 Java, C ++ 및 C #과 같은보다 구조화 된 언어의 문제를 해결하는 새로운 방법을 생각하는 데 도움이됩니다.


Perl이나 Ruby를 배우는 가장 큰 이유 중 하나는 반복해서 수행해야하는 복잡한 작업을 자동화하는 데 도움이되기 때문입니다.

또는 로그 파일의 내용을 분석해야하고 grep, sed 등을 사용하는 것보다 더 많은 mungeing이 필요한 경우.

또한 "설치 비용"이 많지 않은 다른 언어 (예 : Ruby)를 사용하면 아이디어를 C ++, Java 등으로 구현하기 전에 신속하게 프로토 타입을 만들 수 있습니다.

HTH

건배,

Rob


이 회사에서 영원히 일하기를 기대하십니까? 만약 당신이 구직 시장에 나가 있다면, 아마도 일부 장래 고용주들은 파이썬 역설을 알고있을 것 입니다.


좋은 하키 선수는 퍽이있는 곳에서 플레이합니다. 훌륭한 하키 선수는 퍽이있는 곳에서 플레이합니다. -웨인 그레츠키

우리 산업은 항상 변화하고 있습니다. 어떤 언어도 영원히 주류가 될 수 없습니다. 나에게 Java, C ++, .Net은 현재 퍽이있는 곳입니다. 그리고 python, ruby, perl은 퍽이있을 곳입니다. 당신이 좋거나 위대 해지고 싶은지 스스로 결정하십시오!


Paul Graham은 몇 년 전에 Python 프로그래머가 더 나은 Java 프로그래머를 만든 이유에 대한 기사를 게시했습니다. ( http://www.paulgraham.com/pypar.html )

기본적으로 새로운 언어가 회사의 현재 방법론과 관련이 있는지 여부에 관계없이 새로운 언어를 배우는 것은 새로운 아이디어를 배우는 것을 의미합니다. "비즈니스 클래스"로 간주되지 않는 언어를 기꺼이 배우려는 사람은 월급을받는 것 이상의 프로그래밍에 관심이 있음을 의미합니다.

Paul의 사이트를 인용하려면 :

그리고 사람들은 파이썬을 배우지 않습니다. 왜냐하면 그것이 그들에게 직업을 줄 것이기 때문입니다. 그들은 진정으로 프로그래밍을 좋아하고 이미 알고있는 언어에 만족하지 않기 때문에 그것을 배웁니다.

따라서 회사가 고용하고 싶어하는 프로그래머와 정확히 일치합니다. 따라서 더 나은 이름이 없기 때문에 저는 Python 패러독스라고 부를 것입니다. 회사가 비교적 난해한 언어로 소프트웨어를 작성하기로 선택하면 더 나은 프로그래머를 고용 할 수있을 것입니다. 배우기에 충분히 신경을 썼습니다. 그리고 프로그래머들에게 역설은 훨씬 더 뚜렷합니다. 좋은 직업을 얻고 싶다면 배우는 언어는 단순히 직업을 얻기 위해 배우지 않는 언어입니다.

고용주가 새로운 언어를 배우는 데 드는 비용을 기꺼이 지불한다면 학습을 자원 한 사람들 (필수 수업이 아니라고 가정)은 이미 "빠른 경로"에있는 사람과 같을 가능성이 있습니다.


처음 파이썬을 배웠을 때 저는 자바 상점에서 일했습니다. 때때로 저는 자바 프로그램보다 빠른 파이썬 스크립트로 훨씬 쉽게 할 수있는 심각한 텍스트 처리 작업을해야했습니다. 예를 들어 복잡한 CSV 파일을 구문 분석하고 Oracle 데이터베이스의 행에 해당하는 행을 파악해야한다면 Java보다 Python을 사용하는 것이 훨씬 쉽습니다.

그 이상으로, 저는 파이썬을 배우는 것이 저를 훨씬 더 나은 자바 프로그래머로 만들어 준다는 것을 알게되었습니다. 다른 언어로 동일한 개념을 많이 배웠으므로 그 개념을 훨씬 더 잘 이해하고 있다고 느낍니다. 그리고 Python을 Java보다 쉽게 ​​만드는 이유는 Java- > Python?


편집 : 원래 질문에 대한 업데이트를 읽기 전에 이것을 썼습니다. 업데이트 된 질문에 대한 더 나은 답변은 다른 답변을 참조하십시오. 나는 서부에서 가장 빠른 총이 아니라는 경고로 이것을 그대로 둘 것입니다 =)

10 년 전 제가 컴퓨터 사용법을 배우고있을 때 수염을 가진 노인들은 C와 C ++가 어떻게 업계의 도구인지 설명했습니다. 파스칼을 사용하는 사람은 아무도 없었고 어리석은 사람 만이 어셈블러로 회사를 위험에 빠뜨릴 것입니다.

그리고 물론 아무도 Java라는 끔찍한 느리고 추악한 것을 언급하지 않을 것입니다 . 진지한 비즈니스를위한 도구가 아닙니다.

그래서. 음. 위의 이야기에서 언어를 바꾸면 미래를 예측할 수 있습니다. 아마도 당신은 할 수 없습니다. 요점은 Java가 마지막 프로그래밍 언어가 아니며 고용주도 바꿀 가능성이 높다는 것입니다. 미래는 하루 24 시간 당신에게 청구됩니다. 준비하십시오.

새로운 언어를 배우는 것은 당신에게 좋습니다. 또한 어떤 경우에는 오랫동안 자랑 할 권리를 줄 수 있습니다. 나의 첫 번째 대학 과정은 Scheme에있었습니다. 그래서 사람들이 새로운 언어 du jour 에 대해 나에게 말할 때 , 내 대답은 "일류 기능? 그건 너무 지난 세기입니다."

물론 고급 언어로 더 많은 작업을 수행 할 수 있습니다.


새로운 언어를 배우는 것은 장기적인 과정입니다. 며칠 안에 기본 사항을 배우게 될 것입니다. 그러나! 아시다시피 모든 언어의 실제 적용 가능성은 표준 라이브러리 및 기타 사용 가능한 구성 요소와 관련이 있습니다. 효율적으로 사용하는 방법을 배우려면 많은 실습 경험이 필요합니다.

아마도 즉각적인 단기 이점은 개발자가 Python / Perl / Ruby 해머가 필요한 손톱을 구별하는 방법을 배우는 것입니다. 그리고 그들이 좋은 사람이라면 더 많은 것을 공부하고 (아마도 온라인으로!) 진정한 전문가가 될 수 있습니다.

장기적인 이점은 상상하기 더 쉽습니다.

  1. 직원은 더 나은 개발자가됩니다. 더 나은 개발자 => 더 나은 품질. 오늘날 우리는 지식 경제에 살고 있습니다. 이미 당신을 위해 일하는 두뇌에 투자하는 것이 현명합니다.

  2. 다음 큰 언어가 나올 때 적응하기가 더 쉽습니다. NBL은 오늘날의 스크립팅 언어에 존재하는 많은 기능 (일급 함수, 클로저, 스트림 / 생성기 등)을 가질 가능성이 매우 높습니다.

  3. 새로운 시장 가능성과 더 빠르게 대응할 수있는 능력. Python을 작성하지 않더라도 다른 사람들은 . 당신의 고객? 프로젝트의 다른 공급 업체입니까? 아마도 중요한 구성 요소가 다른 언어로 작성 되었습니까? 코드를 이해하고 인터페이스 할 수있는 사람이 없다면 돈과 시간이들 것입니다.

  4. 신병 모집. 회사가 사람들에게 새롭고 흥미로운 것을 가르치는 것으로 명성이 있다면, 최고의 인재를 채용하는 것이 더 쉬울 것입니다. 모두 가 Java / C # / C ++을하고 있습니다. 취업 시장에서 자신을 차별화하는 것은 매우 효과적인 방법이 아닙니다.


업데이트 된 질문에 대한 답변으로는 닭고기 / 달걀 문제입니다. 비용을 정당화하는 가장 좋은 방법은 다른 곳에서 비용을 절감하는 방법을 보여주는 것이므로 일종의 기능적 프로토 타입을 구축하기 위해 먼저 무언가를 배우기 위해 추가 / 개인적인 시간을 투자해야 할 수도 있습니다.

상사에게 "이런 일을했는데 이렇게하면 시간을 절약 할 수 있습니다 (또는 더 좋은 방법은 이만큼 $$). 모든 사람이이 돈을 사용할 수 있다면 얼마나 절약 할 수 있을지 상상해보십시오."

and then after they agree, explain how it is some other technology and that it is worth the expense to get more training, and training for others on how to do it better.


I have often found that learning another language, especially a dynamically typed language, can teach you things about other languages and make you an overall better programmer. Learning ruby, for example, will teach you Object Oriented programming in ways Java wont, and vice versa. All in all, I believe that it is better to be a well rounded programmer than stuck in a single language. It makes you more valuable to the companies/clients you work for.


check out the answers to this thead:

https://stackoverflow.com/questions/76364/what-is-the-single-most-effective-thing-you-did-to-improve-your-programming-ski#84112

Learning new languages is about keeping an open mind and learning new ways of doing things.


Im not sure if this is what you are looking for, but we write our main application with Java at the small company I work for, but have used python to write smaller scripts quickly. Backup software, temporary scripts to manipulate data and push out results. It just seems easier sometimes to sit down with python and write a quick script than mess with classes and stuff in java.

Temp scripts that aren't going to stick around don't need a lot of design time wasted on them.

And I am lazy, but it is good to just learn as much as you can of course and see what features exist in other languages. Knowing more never hurts you in future career changes :)


It's all about broadening your horizons as a developer. If you limit yourself to only strong-typed languages, you may not end up the best programmer you could.

As for tasks, Python/Lua/Ruby/Perl are great for small simple tasks, like finding some files and renaming them. They also work great when paired with a framework (e.g. Rails, Django, Lua for Windows) for developing simple apps quickly. Hell, 37Signals is based on creating simple yet very useful apps in Ruby on Rails.


They're useful for the "Quick Hack" that is for plugging a gap in your main language for a quick (and potentially dirty) fix faster than it would take to develop the same in your main language. An example: a simple script in perl to go through a large text file and replace all instances of an email address with another is trivial with an amount of time taken in the 10 minute range. Hacking a console app together to do the same in your main language would take multiples of that.

You also have the benefit that exposing yourself to additional languages broadens your abilities and learning to attack problems from a different languages perspective can be as valuable as the language itself.

Finally, scripting languages are very useful in the realm of extension. Take LUA as an example. You can bolt a lua interpreter into your app with very little overhead and you now have a way to create rich scripting functionality that can be exposed to end users or altered and distributed quickly without requiring a rebuild of the entire app. This is used to great effect in many games most notably World of Warcraft.


Personally I work on a Java app, but I couldn't get by without perl for some supporting scripts.

I've got scripts to quickly flip what db I'm pointing at, scripts to run build scripts, scripts to scrape data & compare stuff.

Sure I could do all that with java, or maybe shell scripts (I've got some of those too), but who wants to compile a class (making sure the classpath is set right etc) when you just need something quick and dirty. Knowing a scripting language can remove 90% of those boring/repetitive manual tasks.


Learning something with a flexible OOP system, like Lisp or Perl (see Moose), will allow you to better expand and understand your thoughts on software engineering. Ideally, every language has some unique facet (whether it be CLOS or some other technique) that enhances, extends and grows your abilities as a programmer.


If all you have is a hammer, every problem begins to look like a nail.

There are times when having a screwdriver or pair of pliers makes a complicated problem trivial.

Nobody asks contractors, carpenters, etc, "Why learn to use a screwdriver if i already have a hammer?". Really good contractors/carpenters have tons of tools and know how to use them well. All programmers should be doing the same thing, learning to use new tools and use them well.

But before we use any power tools, lets take a moment to talk about shop safety. Be sure to read, understand, and follow all the safety rules that come with your power tools. Doing so will greatly reduce the risk of personal injury. And remember this: there is no more important rule than to wear these: safety glasses -- Norm


I think the main benefits of dynamic languages can be boiled down to

  1. Rapid development
  2. Glue

The short design-code-test cycle time makes dynamic languages ideal for prototyping, tools, and quick & dirty one-off scripts. IMHO, the latter two can make a huge impact on a programmer's productivity. It amazes me how many people trudge through things manually instead of whipping up a tool to do it for them. I think it's because they don't have something like Perl in their toolbox.

The ability to interface with just about anything (other programs or languages, databases, etc.) makes it easy to reuse existing work and automate tasks that would otherwise need to be done manually.


Don't tell your employer that you want to learn Ruby. Tell him you want to learn about the state-of-the-art in web framework technologies. it just happens that the hottest ones are Django and Ruby on Rails.


I have found the more that I play with Ruby, the better I understand C#.

1) As you switch between these languages that each of them has their own constructs and philosophies behind the problems that they try to solve. This will help you when finding the right tool for the job or the domain of a problem.

2) The role of the compiler (or interpreter for some languages) becomes more prominent. Why is Ruby's type system differ from the .Net/C# system? What problems do each of these solve? You'll find yourself understanding at a lower level the constructs of the compiler and its influence on the language

3) Switching between Ruby and C# really helped me to understand Design Patterns better. I really suggest implementing common design patterns in a language like C# and then in a language like Ruby. It often helped me see through some of the compiler ceremony to the philosophy of a particular pattern.

4) A different community. C#, Java, Ruby, Python, etc all have different communities that can help engage your abilities. It is a great way to take your craft to the next level.

5) Last, but not least, because new languages are fun :)


Given the increasing focus to running dynamic languages (da-vinci vm etc.) on the JVM and the increasing number of dynamic languages that do run on it (JRuby, Grrovy, Jython) I think the usecases are just increasing. Some of the scenarios I found really benifited are

  1. Prototyping- use RoR or Grails to build quick prototypes with advantage of being able to runn it on the standard app server and (maybe) reuse existing services etc.

  2. Testing- right unit tests much much faster in dynamic languages

  3. Performance/automation test scripting- some of these tools are starting to allow the use standard dynamic language of choice to write the test scripts instead of proprietary script languages. Side benefit might be to the able to reuse some unit test code you've already written.


Philosophical issues aside, I know that I have gotten value from writing quick-and-dirty Ruby scripts to solve brute-force problems that Java was just too big for. Last year I had three separate directory structures that were all more-or-less the same, but with lots of differences among the files (the client hadn't heard of version control and I'll leave the rest to your imagination).

It would have taken a great deal of overhead to write an analyzer in Java, but in Ruby I had one working in about 40 minutes.


Often, dynamc languages (especially python and lua) are embedded in programs to add a more plugin-like functionality and because they are high-level languages that make it easy to add certain behavior, where a low/mid-level language is not needed.

Lua specificially lacks all the low-level system calls because it was designed for easeof-use to add functionality within the program, not as a general programming language.


You should also consider learning a functional programming language like Scala. It has many of the advantages of Ruby, including a concise syntax, and powerful features like closures. But it compiles to Java class files and and integrate seamlessly into a Java stack, which may make it much easier for your employer to swallow.

Scala isn't dynamically typed, but its "implicit conversion" feature gives many, perhaps even all of the benefits of dynamic typing, while retaining many of the advantages of static typing.


Dynamic languages are fantastic for prototyping ideas. Often for performance reasons they won't work for permanent solutions or products. But, with languages like Python, which allow you to embed standard C/C++/Java inside them or visa versa, you can speed up the really critical bits but leave it glued together with the flexibility of a dynamic language.

...and so you get the best of both worlds. If you need to justify this in terms of why more people should learn these languages, just point out much faster you can develop the same software and how much more robust the solution is (because debugging/fixing problems in dynamic languages is in my experience, considerably easier!).


Knowing grep and ruby made it possible to narrow down a problem, and verify the fix for, an issue involving tons of java exceptions on some production servers. Because I threw the solution together in ruby, it was done (designed, implemented, tested, run, bug-fixed, re-run, enhanced, results analyzed) in an afternoon instead of a couple of days. I could have solved the same problem using an all-java solution or a C# solution, but it most likely would have taken me longer.

Having dynamic language expertise also sometimes leads you to simpler solutions in less dynamic languages. In ruby, perl or python, you just intuitively reach for associative arrays (hashes, dictionaries, whatever word you want to use) for the smallest things, where you might be tempted to create a complex class hierarchy in a statically typed language when the problem doesn't necessarily demand it.

Plus you can plug in most scripting languages into most runtimes. So it doesn't have to be either/or.


The "real benefit" that an employer could see is a better programmer who can implement solutions faster; however, you will not be able to provide any hard numbers to justify the expense and an employer will most likely have you work on what makes money now as opposed to having you work on things that make the future better.

The only time you can get training on the employer's dime, is when they perceive a need for it and it's cheaper than hiring a new person who already has that skill-set.

참고URL : https://stackoverflow.com/questions/84340/why-learn-perl-python-ruby-if-the-company-is-using-c-c-sharp-or-java-as-the

반응형