Что такое динамический язык, и почему не делает C#, квалифицируют?

Это может быть достигнуто с помощью np.where:

df = pd.DataFrame({
    'Name': ['Ann', 'Juh', 'Jeo', 'Sam'],
    'Age': [43,29,42,59],
    'Task1': ['Drafting a letter', 'Sending', 'Pasting', 'Sending'],
    'Task2': ['Sending', 'Paking', 'Sending', 'Pasting'],
    'Task3': ['Packing', 'Letter Drafting', 'Paking', 'Letter Drafting']
    })

df_new = df.iloc[df.index[np.concatenate(
                np.where(df['Task1'].str.contains('Drafting')) +
                np.where(df['Task2'].str.contains('Drafting')) +
                np.where(df['Task3'].str.contains('Drafting'))).astype(int)
            ].values.tolist()]

print(df_new)

  Name  Age              Task1    Task2            Task3
0  Ann   43  Drafting a letter  Sending          Packing
1  Juh   29            Sending   Paking  Letter Drafting
3  Sam   59            Sending  Pasting  Letter Drafting
32
задан 7 revs, 3 users 80% 20 June 2012 в 15:58
поделиться

11 ответов

What is a dynamic language?

Whether or not a language is dynamic typically refers to the type of binding the compiler does: static or late binding.

Static binding simply means that the method (or method hierarchy for virtual methods) is bound at compile time. There may be a virtual dispatch involved at runtime but the method token is bound at compile time. If a suitable method does not exist at compile time you will receive an error.

Dynamic languages are the opposite. They do their work at runtime. They do little or no checking for the existence of methods at compile time but instead do it all at runtime.

Why is C# not a dynamic language?

C#, prior to 4.0, is a statically bound language and hence is not a dynamic language.

Why is Ruby the language of the future?

This question is based on a false premise, namely that there does exist one language that is the future of programming. There isn't such a language today because no single language is the best at doing all the different types of programming that need to be done.

For instance Ruby is a great language for a lot of different applications: web development is a popular one. I would not however write an operating system in it.

72
ответ дан 27 November 2019 в 19:46
поделиться

На динамическом языке вы можете сделать это:

var something = 1;
something = "Foo";
something = {"Something", 5.5};

Другими словами, тип не является статическим. В статически типизированном языке это может привести к ошибке компилятора.

Такие языки, как C, C ++, C # и Java, статически типизированы.

Такие языки, как Ruby, Python и Javascript, динамически типизированы.

] Кроме того, это не то же самое, что "сильно или слабо" напечатано. Это все по-другому.

26
ответ дан 27 November 2019 в 19:46
поделиться

C# is a statically typed language, because the type of every object you're working with needs to be known at compile time. In a dynamic language you don't need to know what type an object is at compile time. Maybe you import some classes that you don't know before hand, like you import all classes in a folder, like plugins or something. Or maybe even the type of an object depends on user-interaction.

You can achieve a similar effect by using interfaces or base classes, but it's not completely the same because you are limited to using classes that explicitly inherit from or implement that interface.

In dynamically typed languages it doesn't care what the type is when you compile it, it'll try to call the method you specified by name, if that method doesn't exist on the object it'll throw a run-time exception, so it's up to the programmer to ensure that that doesn't happen or handle it appropriately. You gain flexibility, but lose out a little on compile-time error checking.

3
ответ дан 27 November 2019 в 19:46
поделиться

Глядя на запись в Википедии , мы видим, что динамический язык - это язык, который делает вещи во время выполнения, которые большинство делают во время компиляции. Как правило, в динамическом языке переменная может быстро и легко изменять типы, и, как правило, нет отдельного шага компиляции (а скорее интерпретируемое выполнение или действительно быстрая компиляция). C # - более обычный язык, использующий объявления переменных и компилируемый.

В записи Википедии перечислены многочисленные динамические языки.

«X - это Y будущего», с другой стороны, означает, что кто-то пытается продать вас. что-то. (Не обязательно в буквальном смысле, но пытаться влиять на ваши убеждения так, как удобно говорящему.)

3
ответ дан 27 November 2019 в 19:46
поделиться

В C # 3.0 типы всего должны быть известны во время компиляции. Это статический язык. Динамический язык использует динамическую диспетчеризацию во время выполнения для определения типа вещей и методов, которые нужно вызывать для этих вещей. Оба типа языков имеют свои преимущества и недостатки. C # 4.0 добавит динамические возможности. Андерс Хейлсберг выступил с большим докладом о статических и динамических языках и C # 4.0 на PDC.

2
ответ дан 27 November 2019 в 19:46
поделиться

Слова static и dynamic не определены однозначно.

Однако чаще всего подразумеваются две проблемы:

1 ) В статических языках тип переменной (то есть тип значения, которое переменная может содержать или указывать) не может изменяться в течение программы. Например, в C # вы объявляете тип переменной при ее определении, например:

int a;

Теперь a может содержать только значение int - если вы пытаетесь назначить Строка к нему или вызов метода для него, вы получите ошибку типа компиляции.

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

2
ответ дан 27 November 2019 в 19:46
поделиться

c # статически типизирован, то есть int i = 0; Попробуйте установить I, чтобы быть строкой. компилятор будет жаловаться,

где в качестве python переменная, которая используется для хранения целого числа, может быть затем установлена ​​для хранения строки,

Static: типы являются окончательными, Динамический: типы могут быть изменены,

c # пытается добавить больше динамических подобных функций, например, var

1
ответ дан 27 November 2019 в 19:46
поделиться

Нет настоящего "языка будущего". Разные языки имеют разные цели. Самое большее, вы могли бы сказать, что Ruby является языком будущего .

Согласно Википедии:

Язык динамического программирования - это термин широко используется в информатике для описать класс высокого уровня языки программирования, которые выполняются на во время выполнения многих распространенных поведений, которые other languages might perform during compilation, if at all. These behaviors could include extension of the program, by adding new code, by extending objects and definitions, or by modifying the type system, all during program execution. These behaviors can be emulated in nearly any language of sufficient complexity, but dynamic languages provide direct tools to make use of them. Most dynamic languages are dynamically typed, but not all.

Ruby is a dynamic language and C# is not, since Ruby is interpreted and C# is compiled. However, C# does include some features that make it appear dynamic.

1
ответ дан 27 November 2019 в 19:46
поделиться

Динамический язык обычно считается тем, который может динамически интерпретировать и генерировать код во время выполнения. C # не может этого сделать.

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

1
ответ дан 27 November 2019 в 19:46
поделиться

Я ошеломлен тем, как C # охватывает фундаментальный набор парадигм программирования.

Мы можем сказать, что C # обеспечивает богатое объектно-ориентированное программирование, богатое компонентно-ориентированное программирование, хорошо интегрированное функциональное программирование, полный набор операций запроса к источникам данных разных типов (linq), элегантный подход к параллельному программированию через pLinq и параллельные расширения, в следующем выпуске (c # 4.0) будут мощные динамические возможности, и почти уверен, что в C # 5.0 будет солидный набор метапрограммирования

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

6
ответ дан 27 November 2019 в 19:46
поделиться

Знаете ли вы, что VB6 является одновременно статическим и динамическим?

Если вы объявляете переменные с заданным типом, вы получаете статическое поведение:

Dim name as Label

Теперь вы можете получить доступ только к элементам с именем Label , и intellisense знает об этом.

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

Вы также можете объявлять переменные следующим образом:

Dim proxy As Object

Теперь intellisense не поможет, а VB6 позволит вам делать все, что угодно, с прокси :

proxy.foo()

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

Вы также можете выполнить:

set proxy = <any instance>

, и он будет запущен. Не имеет значения, имеет ли метод foo или нет.

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

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

3
ответ дан 27 November 2019 в 19:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: