С какими языками программирования вы работаете ежедневно и как эффективно справляетесь с задачами, специфичными для языка [закрыто]

22

Редактировать:

Как вы управляете отдельными задачами при работе на нескольких языках

В повседневной обработке задач, с какими разными языками программирования вы работаете?

  • Делаете ли вы умственный сдвиг при работе над каждым языком?
  • Вы расставляете приоритеты и держите каждую задачу отдельно для каждого языка?
  • Кодируете ли вы поэтапно, основываясь на ходе выполнения каждой задачи, плавно переключаясь между языками / IDE / Средой
  • Применяете ли вы один и тот же стиль / правила кодирования на всех языках (не синтаксис)?

Связанный:

Нормально ли для программиста работать над несколькими проектами одновременно?

Aditya P
источник
1
Сделать умственный сдвиг довольно легко. Основная ошибка, с которой я обычно сталкиваюсь, - это когда я пытаюсь сравнить строки .equalsв JavaScript. По крайней мере, я всегда ошибаюсь, вместо того, чтобы использовать ==в Java.
WuHoUnited
Я пишу 3/4 языка в любой день для того же проекта. Как мне управлять? Знать языки. Держите ссылки под рукой. Следуйте языковым соглашениям.
Рог
Платить за переключение между JavaScript и некоторыми серверными языками программирования сегодня не стоит, когда Node.js обладает самой большой в мире экосистемой библиотек и когда вы можете писать синхронный код, используя async / await . Парадигма «Один язык везде» также используется Метеором (более 35 000 звезд GitHub).
Дан Даскалеску

Ответы:

25

Сегодня я написал Java, Python, C ++ и SQL (если это важно). И я был на работе менее 2 часов.

Если вы делаете это регулярно, то умственный сдвиг становится незначительным. Это не имеет ничего общего с многозадачностью. Это все равно, что ходить некоторое время, потом водить машину, водить велосипед, плавать. Нет проблем, потому что это последовательные вещи.

Независимо от этого, цель состоит в том, чтобы выполнить одну задачу, прежде чем перейти к следующей. Я склонен определять задачи с точки зрения конкретной функциональности, исправления или тому подобного. Часто эта задача выполняется только с одним языком, но может потребоваться несколько из них. Например, при работе с JNI вы, как правило, вносите изменения как в Java, так и в нативную сторону параллельно.

Некоторые ответы:

Вы кодируете поэтапно, основываясь на прогрессе в каждой задаче, легко переключаясь между языками / IDE / Environment

Важно иметь возможность плавного переключения между IDE, редакторами, средами. Обычно я держу их все время открытыми.

Применяете ли вы один и тот же стиль / правила кодирования на всех языках (не синтаксис)?

Если это интерфейс, по которому говорят два языка, то да - имена переменных и тому подобное должны быть похожими. В противном случае я пытаюсь применить типичный стиль кодирования этого языка.

оборота Джунас Пулакка
источник
8
звучит как удивительная гонка
Сетзамора
Обычно я пытаюсь выполнить одну задачу, прежде чем перейти к следующей, но для одной задачи может потребоваться использование более одного языка. Использование IDE полиглота, такого как NetBeans, и / или постоянное открытие всех необходимых редакторов и сред обязательно. Тогда вам не нужно сильно заботиться о языке (который является просто «деталью реализации»), и вы можете сосредоточиться на задаче (которая является частью того, что вы действительно должны выполнить - работающей программы).
Joonas Pulakka
Было бы неплохо, если бы вы могли добавить вышеизложенное к своему ответу и немного рассказать о том, как вы справляетесь со стилями программирования на основе кодирования / соглашений.
Aditya P
@AdityaGameProgrammer: добавлены некоторые моменты.
Joonas Pulakka
18

Здесь формируется паттерн:

  • Внешний интерфейс: все, что работает в браузере (javascript, html и css)
  • Бизнес-логика: любой из множества языков общего назначения
  • Бэкэнд: SQL
  • Сценарий сборки: немного скриптового языка

Так что для меня это: JavaScript, HTML и CSS, C #, Transact-SQL и Windows Powershell.


Применяете ли вы один и тот же стиль / правила кодирования на всех языках (не синтаксис)?

Нет, я занимаюсь программированием в соответствии с соглашением языка. Простой пример:

   // C#
   int MyFunction() 
   {
       return 0;
   }

   // Javascript
   function myFunction() {
      return 0;
   }

Использование визуально различных соглашений о кодировании помогает мне сделать умственный сдвиг между языками. И наоборот, если мой код выглядел одинаково на каждом языке, я буду делать синтаксические ошибки, забывая, на каком языке я кодирую.

Андрей Шепард
источник
1
+1 Хороший ответ. Отлично, вы можете поддерживать языковые соглашения и стиль кодирования.
Aditya P
Ну, в некоторых случаях Javascript заставляет вас работать таким образом из-за неприятной неявной точки с запятой. Но в противном случае я не вижу причин делать это ...
Билли ОНил
Помимо стиля кодирования, другой способ облегчить умственный сдвиг между языками - это установить различные цветовые схемы для каждого языка в ваших редакторах / IDE.
Спойк
5

Как указывает SK-logic, ментальный сдвиг не должен быть проблемой, если вы используете хорошо выбранные предметно-ориентированные языки. Но часто вы не можете выбрать язык, поэтому иногда требуется время, чтобы переключиться. По моему опыту, сложность заключается скорее в переключении синтаксиса, чем в переключении стиля программирования. Единственное раздражающее изменение, которое я всегда испытываю, - это изменение стиля комментария : если я просто открываю файл, чтобы быстро изменить строку кода, это часто происходит:

#  what
// the
;  f***
%  is
-- the one-line comment character or sequence?
Jakob
источник
4

В моей последней работе: Java, C ++, C #, JavaScript и VBScript.

Но, к счастью, все вышеперечисленное было в совершенно разных контекстах (и в нескольких продуктах) - поэтому, когда вы достаточно хорошо знали каждую кодовую базу, мысленное переключение на разные контексты было на самом деле довольно простым и логичным.

По правде говоря, меня больше всего беспокоило, что проблемы со службой поддержки меня прерывали. Внутреннее переключение на задачу на другом языке само по себе никогда не было проблемой.

Бобби Столы
источник
2

Я работаю с 2 языками: c # и python.

Я использую их обоих в одном проекте, но, очевидно, для разных задач.

Когда я работаю над задачей, я работаю над этой задачей, пока она не будет полностью завершена или пока я не смогу больше сосредоточиться на ней. Это означает, что если мне придется переключаться между языками, то когнитивный диссонанс практически отсутствует, поскольку я уже перестал думать на любом языке, когда я закончу с последним заданием.

По общему признанию, я сделаю небольшой перерыв, когда выйду из задачи, которая, вероятно, очень помогает.

Мэтт Эллен
источник
2

Как можно меньше. Обычно он включает в себя: 1. Python, плюс 2. Шаблоны HTML, 3. HTML + CSS и иногда 4. Javascript. Переход с Python на JS определенно требует умственного сдвига, в том числе потому, что мне нужно использовать разные инструменты.

Я добавляю HTML + CSS отдельно от шаблонов HTML, даже если эти языки сами по себе не являются (или могут зависеть от вашей религии), потому что это также требует умственного сдвига и использования других инструментов, хотя и не так плохо, как переключение на Javascript. Работа с HTML + CSS с точки зрения дизайна, чтобы страница выглядела как макет требует, отличается от создания HTML-шаблонов. Но это больше ортогонально к Python, чем к Javascript, что означает, что мне нужно переключить свой настрой на другое. :)

Леннарт Регебро
источник
2

Ежедневно пользуюсь:

  1. HTML / CSS
  2. Javascript / JQuery
  3. VBScript / JScript
  4. PHP
  5. SQL
  6. C # / Asp.Net

Я также иногда использую Python, Java и XML (это считается?). Моя работа заключается в редактировании различных веб-сайтов, которые могут быть построены на любом веб-языке (даже один раз был на Perl) и использовать совершенно разные парадигмы / шаблоны (процедурный, MVC, OOP и т. Д.).

Чтобы ответить на вопрос - я в основном использую Notepad ++ в качестве моей IDE для первых 5 перечисленных, затем Visual Studio для Asp.Net.

Это может быть затруднительным переключением между каждым языком - запоминанием того, нужны ли вам точки с запятой в конце строк, или есть ли у петель скобки или нет. Переключение с VBScript на JScript является наихудшим вариантом для этого - оба файла заканчиваются на .asp и на первый взгляд выглядят довольно схожими, поэтому требуется время, чтобы понять, почему я получаю ошибки.

whostolemyhat
источник
Эй, ты тоже должен здесь работать! (j / k) Мы переписываем кодовую базу ASP и .NET в PHP, предоставляя нам одинаковый выбор языков.
Greyfade
2

На данный момент я пишу на Ruby, PHP, Java, C и JavaScript и буду писать не менее 1 часа каждый из них каждый день. Основная проблема в действительности заключается в том, чтобы найти время, поскольку они все для несвязанных проектов.

Ментальный Сдвиг

Мой стиль работы такой, что я люблю работать в течение длительного времени. К сожалению, это означает, что если у меня есть только одна вещь, когда я сталкиваюсь с ментальным блоком с куском кода, мне понадобится много времени, чтобы преодолеть это. Я тоже не нахожу перерыв. Имея другие проекты и, в частности, другие языки, переключаться на то, когда я застреваю, значит, ко времени, когда я возвращаюсь к исходному языку, у меня сразу есть решение.

Поэтому, да, есть психическое изменение, и я думаю, что это делает меня намного более продуктивным.

Приоритизация задач

Я использую диспетчер задач (gTasks для Android) и у меня есть отдельный список задач для каждого проекта. Если проекту требуется несколько языков, я не разделяю их. Обычно это происходит потому, что они будут сильно связаны каким-то образом. Например, JavaScript и Ruby для работы с AJAX. Если языки технически относятся к одному и тому же проекту, но проект настолько велик, что они практически не связаны, то я, скорее всего, буду считать их отдельными проектами.

Как правило, мой приоритет - «какой список имеет больше задач», но я всегда буду переключаться, если застряну в проблеме.

Соглашения о кодировании

Это немного смеси:

  • Если проект разрабатывается совместно с другими, тогда, очевидно, я буду соответствовать тем соглашениям, которые были приняты для этого проекта.
  • Если проект личный, то мне нравится, чтобы мой код выглядел в соответствии с доминирующим стилем в сообществе / стандартной библиотеке для данного языка. Мне трудно читать код Java, если все функции пользователя находятся, например, в snake_case. Точно так же методы camelCase в Ruby выглядят странно и неуместно.
  • Для соглашений, которые не очевидны из простого использования языка, такого как отступ, я буду стремиться принять свои собственные стандарты и использовать их на всех языках, которые я использую. В случае отступа я всегда использую 2 пробела. Для стиля распорки, я всегда использую то , что Википедия в настоящее время принять решение назвать Compact Control Readability Style .

Кроме того: самая большая проблема для меня - это переключение между языками стилей. Очень трудно гоняться, когда кодируешь SASS вместе с Ruby, а затем приходится переключаться обратно на CSS для всего остального. В меньшей степени у меня та же проблема с HAML / HTML и JSON / XML.

Руперт Мэдден-Эббот
источник
2

Я пишу приложения для ISP, также существует культура «делай то, что тебе удобно», часто написанная многими сетевыми инженерами, которые увлекаются программированием. Мне приходится еженедельно иметь дело с программами, которые достаточно хорошо написаны, по-настоящему ужасны. С чем я часто буду сталкиваться и работать над ...

  • Perl , часто быстрые одноразовые сценарии, или часто используемые людьми, которые знают (или любят) только Perl. Больше унаследованных вещей написано на Perl, который я нахожу. Некоторые из худших вещей написаны на Perl не потому, что язык плохой, а потому, что его легко используют начинающие программисты. Я все еще использую это для определенных типов одноразовых программ. Я редко использую это для чего-то большего.
  • PHP , многое из этого, часто начальный язык для любителей. Некоторые очень хорошо написанные программы, некоторые шлоки. Для определенных типов веб-приложений я выберу PHP, потому что я могу быстрее его освоить.
  • Shell Scripting , в основном используется для запуска других программ или задач, таких как чтение журналов.
  • Ожидайте , все еще сталкивайтесь с этим (и ревнители, которые настаивают, что это нирвана для выполнения команд на сетевых устройствах). Я работаю над этим, когда должен, но где-то в мире убивают маленького котенка, когда я сталкиваюсь с одной из этих многих тысяч строк программ без единой функции, только одна длинная итеративная ферма пасты.
  • C , редко используется из-за проблем переносимости, но я буду использовать его для выполнения конкретных задач.
  • Java , я часто использую это из-за обширной поддержки библиотек и простого развертывания. У нас очень разнородная сеть и ИТ-персонал, у которого повестка дня отличается от моей. С Java я могу включать библиотеки и не беспокоиться о том, что ИТ-специалистам нужно «обновить» что-то в системе, что мне нужно для развертывания программы. Чаще всего это мой выбор языка программирования.

В компании есть и другие языки (.net, VB, Phyton, Rails и т. Д.), Но мне еще не приходилось с ними работать ... пока.

Редактировать, для редактирования ...

Вы должны мысленно переключаться, когда работаете между языками. Чаще всего я теряю синтаксис. Я держу коллекцию справочников наготове. Я обнаружу, что потребуется около получаса, чтобы вернуться к мышлению другого языка. Чем более тупой синтаксис для языка, тем дольше смещение. Я считаю, что переход от использования Java к выполнению Perl, вероятно, займет больше всего времени, если я некоторое время не касался Perl. Чем больше вы это делаете, тем легче становится.

Билл
источник
1

Я часто использую шесть или более языков в одном проекте. Большинство из них обычно относятся только к этому проекту.

Ментальный сдвиг требуется только в том случае, если вы используете язык, который не подходит для какой-либо задачи. В противном случае естественно использовать наилучшую посадку. Различные наборы языков используются для разных этапов проекта.

SK-логика
источник
Вы менеджер проекта или вы в них пишете код?
Адитья П
@AdityaGameProgrammer, я в них кодирую.
SK-logic
Не возражаете, объясняя понижающий голос?
SK-logic
1

Я часто использую C (встроенный), C ++ (рабочий стол), Python, Matlab и VHDL (своего рода язык аппаратного программирования), часто все в один и тот же день. В моем окружении подобная языковая ловкость необходима по моему мнению.

Я часто не могу получить все, что мне нужно для конкретного проекта, эффективно на одном языке. Например, как встроенный C, так и VHDL являются довольно низкоуровневыми, поэтому я часто использую Python для анализа их результатов (или даже для генерации кода).

Быстрое переключение между ними не является проблемой через некоторое время, это все равно что переключаться с молотка на отвертку - подходящий инструмент для работы.

Мартин Томпсон
источник
1

Это действительно зависит от того, как определяется работа ... Я использую C # для разработки приложений Microsoft Surface каждый день. Я также использую Java каждый день для своих приложений для Android. Но я стараюсь учиться сам и начал использовать R, Ruby и Objective-C. Иногда мне также нужно немного SQL, и если вы включите языки сценариев и другие языки в свой вопрос, то также JavaScipt, SPARQL и BeanShell.

Применяете ли вы один и тот же стиль / правила кодирования на всех языках (не синтаксис)?

Я пытаюсь следовать соглашениям о кодировании каждого языка, но особенно между Java и C # У меня есть некоторые трудности из-за фигурных скобок и именования методов в верхнем регистре в C #:

public void test() {
   ...
}

противы

public void Test()
{
   ...
}
RoflcoptrException
источник
Любой стиль фигурных скобок приемлем в C #. Не тратьте слишком много времени на то, чтобы напрячь свой мозг. :-)
Коди Грей
0

Я создаю веб-приложения. Так что в настоящее время его:

  • XHTML
  • JavaScript
  • C # как часть
  • ASP.Net Framework (этот сорт из этого языка тоже)
  • T-SQL для связи с базой данных
  • Английский для общения с людьми.

Редакторы: Sublime Text (по выбору), Visual Studio 2010 (другого приемлемого выбора, когда дело доходит до ASP.Net)

5arx
источник
0

На своей работе я использую Java, C, Python, Django и небольшие кусочки PHP. Я также работал над очень маленьким проектом на C ++ от Microsoft.

Я не использую их все каждый день, но иногда я использую их все без проблем. В обычный день я использую только один или два. Программирование, которое я делаю дома, обычно включает в себя работу с технологиями, отличными от тех, которые я использую на работе, таких как Qt или Ruby on Rails.

jonescb
источник