русский
Germany.ruForen → Архив Досок→ Programmierung

Programmierung Quereinsteiger?

3536  1 2 3 4 alle
AlexNek патриот27.12.21 18:12
AlexNek
NEW 27.12.21 18:12 
in Antwort низкий ум 27.12.21 13:01
То что видел я лично: цениться опыт работы с библиотеками

У нас совершенно разные задачи:

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

чел. как-то знающий язык и конкретную библиотеку и больше ничего - нам в принципе не нужен.

-прикладнику наоборот - нужно решить конкретную задачу и в основном одному.

#41 
uscheswoi_82 старожил28.12.21 09:04
NEW 28.12.21 09:04 
in Antwort AlexNek 27.12.21 18:12

НП. А вот имхо и весь язык, мне кажется проще бейсика:

var1=5
if var1 == 5:
  print("var1 == 5")
elif var1 == 4:
  print("var1 == 4")
else:
  print("var1 == " + str(var1))
items = ["orange", "strawberry"]
for item in items:
  print(item, end=" ")
for i in range(0, 11):
  print(i)
print("")
for i in range(10, 0, -1):
  print(i)
print("Hello " * 5)
test = "Hello";
print(test[::-1])
print(test[0:2])
print(test[2:0:-1])
def myprocedure(p):
  print("Hello " + p)
def myfunc(p):
  return "Hello " + p
myprocedure("uscheswoi_82")
print(myfunc("uscheswoi_82"))
class Test:
  def __init__(self, name):
    self.name = name
  def tostring(self):
    return self.name
t = Test("uscheswoi_82")
print(t.tostring())
x = lambda a : a + 10
print(x(5))


А это результат:

var1 == 5
orange strawberry 0
1
2
3
4
5
6
7
8
9
10

10
9
8
7
6
5
4
3
2
1
Hello Hello Hello Hello Hello
olleH
He
le
Hello uscheswoi_82
Hello uscheswoi_82
uscheswoi_82
15
Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#42 
AlexNek патриот28.12.21 12:53
AlexNek
NEW 28.12.21 12:53 
in Antwort uscheswoi_82 28.12.21 09:04

Что то я не припомню чтобы в бейсике такая фигня была - print(test[::-1])

#43 
низкий ум завсегдатай28.12.21 13:44
28.12.21 13:44 
in Antwort AlexNek 28.12.21 12:53

А почему она там должна быть?

Это как раз приятная фича питона. В R довольно близко:

> test <- 10:1

> print(test)

[1] 10 9 8 7 6 5 4 3 2 1

> print(test[test])

[1] 1 2 3 4 5 6 7 8 9 10

Резко сокращает обьем кода при обработке массивов/матриц - не нужны явные циклы, можно использовать векторизацию.

На питоне/R код для вычислительных задач компактнее си-шного раз эдак в 3-5. Понятно что по скорости может быть обратная картина. Но для очень широкого спектра применения разница по скорости пренебрежима.


#44 
7495 знакомое лицо28.12.21 16:20
7495
NEW 28.12.21 16:20 
in Antwort низкий ум 28.12.21 13:44

pragma solidity ^0.5.0;


contract SolidityTest {


uint16 public a = 20;

uint16 public b = 10;


uint public sum = a + b;

uint public diff = a - b;

uint public mul = a * b;

uint public div = a / b;

uint public mod = a % b;

uint public dec = --b;

uint public inc = ++a;

}


Output :

Fragen und Antworten - Программируем калькулятор пособий для беженцев вместе.
#45 
AlexNek патриот28.12.21 17:53
AlexNek
NEW 28.12.21 17:53 
in Antwort низкий ум 28.12.21 13:44
А почему она там должна быть?

Раз питон "проще" бейсика, то все конструкции должны быть также проще, а именно эта вызывает у меня море вопросов.

Для начала нужно найти что это вообще такое

https://stackoverflow.com/questions/509211/understanding-s...

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

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

#46 
низкий ум завсегдатай28.12.21 18:26
NEW 28.12.21 18:26 
in Antwort AlexNek 28.12.21 17:53

Конструкции в питоне проще. И нагляднее. Такие конструкции встречаются в скриптовых языках часто - например R, Labtalk в пакете Origin, Matlab. Они привычны для не-программистов пришедших в питонизм из всевозможных интерактивных пакетов научной графики и обработки данных. Для меня они интуитивно понятны.

Бейсик в варианте VB я воспринимаю с содроганием. Он мне категорически ненравиться. Хотя я знаю виртуозов этого языка использующих ево очень и очень эффективно для технических расчетов.

Длинный код нафиг не нужен для тех кто считает а не программит коммерческие приложения. Чужой питоновский или R код я читаю слёта не испытывая никаких трудностей. И такие конструкции только облегчают понимание. Но разрабу клепавшему интерфейсы они врядли понравяться.


#47 
uscheswoi_82 старожил28.12.21 18:55
NEW 28.12.21 18:55 
in Antwort AlexNek 28.12.21 12:53
Что то я не припомню чтобы в бейсике такая фигня была - print(test[::-1])

В бейсике было бы так:

DIM test
test$ = "Hello"
FOR i% = LEN(test$) TO 1 STEP -1
  PRINT MID$(test$, i%, 1)
NEXT

В других ЯП есть тоже mid, или substr. В C# было бы так https://docs.microsoft.com/ru-ru/dotnet/api/system.string.substring?view=net-6.0 и так https://stackoverflow.com/questions/228038/best-way-to-rev...

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#48 
alex445 коренной житель28.12.21 19:26
NEW 28.12.21 19:26 
in Antwort AlexNek 28.12.21 17:53

Для начала нужно найти что это вообще такое

https://stackoverflow.com/questions/509211/understanding-s...

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

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

a[start:stop]  # items start through stop-1
a[start:]      # items start through the rest of the array
a[:stop]       # items from the beginning through stop-1
a[:]           # a copy of the whole array

Теперь что-то подобное в Шарпе - стоп означает не стоп, а стоп минус 1. И эту хрень надо постоянно держать в голове. А ведь до появления этой уродской нотации у меня в голове было на несколько байт больше свободного места.

#49 
alex445 коренной житель28.12.21 19:28
NEW 28.12.21 19:28 
in Antwort низкий ум 28.12.21 18:26
Длинный код нафиг не нужен для тех кто считает а не программит коммерческие приложения.

Тогда наверное лучше Матлаб какой-нибудь? Там тупо алгебра, в том числе векторная. Поназывал всё однобуквенно и фигачишь функции и тензоры.

#50 
низкий ум завсегдатай28.12.21 20:17
NEW 28.12.21 20:17 
in Antwort alex445 28.12.21 19:28

Вы вообще в курсе сколько стоит одна лицензия Матлаба для индустриального клиента? Я работал с Матлабом во времена научные - академический сектор мог себе позволить излишества. А сейчас фирма сказала что не видит необходимости в покупке этого продукта. И если честно - я тоже. Зачем чтото покупать если питон плюс scipy/numpy/... забесплатно обеспечивают вполне сравнимый функционал? Кроме линейной алгебры и верчения матриц - а мне их вертеть приходилось, решал обратные некорректные задачи в своей области - существует огромное количество других задач. И все их можно решать в питоне с библиотеками. Или в R. По большому счету я не вижу принципиальной разницы между программированием на языке Матлаба и на питоне. Объемы кода сравнимые.

#51 
uscheswoi_82 старожил29.12.21 13:57
NEW 29.12.21 13:57 
in Antwort uscheswoi_82 28.12.21 18:55

Вообще легко запомнить:

В Си/Си++/Java/javascript/PHP/C#

for(i=start; i<end; i=step) { ... }

В Бейсике:

FOR i%=start TO end STEP step ... NEXT

В Pascal:

for i:=start to end do begin ... end 
или
for i:=start downto end do begin ... end

А в Python:

array[start:end:step] 

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#52 
alex445 коренной житель29.12.21 14:04
NEW 29.12.21 14:04 
in Antwort uscheswoi_82 29.12.21 13:57, Zuletzt geändert 29.12.21 14:06 (alex445)

Это легко запомнить. Нелегко - какие значения присваивать этим переменным. Что в первом варианте end = length - 1. А в C# в разных местах ещё и с разной нотацией. В операторах цикла и индексах массивов писать length - 1, а в операторах срезов массивов просто length, потому что -1 там уже подразумевается, и если напишешь length - 1, то последний элемент не захватится.


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

#53 
wasja-de постоялец29.12.21 17:33
NEW 29.12.21 17:33 
in Antwort низкий ум 28.12.21 20:17
Вы вообще в курсе сколько стоит одна лицензия Матлаба для индустриального клиента?


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

#54 
uscheswoi_82 старожил29.12.21 19:45
NEW 29.12.21 19:45 
in Antwort alex445 29.12.21 14:04
Интересно, в других вышеперечисленных языках тоже полно таких "маленьких нюансов"?

Думаю да.

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#55 
uscheswoi_82 старожил29.12.21 19:46
NEW 29.12.21 19:46 
in Antwort wasja-de 29.12.21 17:33, Zuletzt geändert 29.12.21 20:00 (uscheswoi_82)

Тут преподаватель сравнивает Python и Си++ см. https://youtu.be/KdZ4HF1SrFs?t=1359. Как понимаю когда пишишь так x = "Hello World", в языке Python выделяется место в памяти под слово Hello World, а переменная x содержит не само знасение Hello World, а ссылку, если написать x = 5, удаляется из памяти Hello World, и переменная x содержит уже новую ссылку на число 5. А в Си++ так смущ:

#include <iostream>
#include <string>
using namespace std;
int main(int argc, char** argv) {
 string s = "Hello, World!";
 string s2 = s;
 cout << s2 << endl;
 s = "";
 cout << s2 << endl;
}


Результат смущ:

Hello, World!
Hello, World!
--------------------------------
Process exited after 0.02354 seconds with return value 0
Drücken Sie eine beliebige Taste . . .
Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#56 
uscheswoi_82 старожил29.12.21 20:03
NEW 29.12.21 20:03 
in Antwort uscheswoi_82 29.12.21 19:46

НП.

Кому не нравится Python, можете попробывать Lisp:

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#57 
низкий ум завсегдатай29.12.21 20:11
NEW 29.12.21 20:11 
in Antwort wasja-de 29.12.21 17:33

Октав я все еще пользую время от времени но все реже и реже . Многие плюются - октав не вполне совместим, не все тулбуксы работают. А сейчас нет смысла и в октаве - многое в R и питоне мне нравится больше матлабовского.

Ну и смотря какой вычмат писать. По строкам сишный код у меня занимает в разы больше места - иногда приходится вычмат в виде DLL для софта управления оборудованием оформлять. Вообще сравнивать сложно. Все будет определяться степенью "библиотечности" функций.

Мне надо быстро давать осмысленные "вводные" начальству - обычно все требуется "еще вчера". Решающее значение имеют скорость вникания в проблему и имплементации метода обработки данных. Сама обработка редко требует больших выч.ресурсов. Чаще требуются упражнения в изощренной статистике чем обработка очень больших данных.

#58 
низкий ум завсегдатай29.12.21 20:13
NEW 29.12.21 20:13 
in Antwort uscheswoi_82 29.12.21 20:03

Кому не нравится питон может использовать R или Julia в зависимости от типа задач.

#59 
uscheswoi_82 старожил29.12.21 20:36
NEW 29.12.21 20:36 
in Antwort uscheswoi_82 29.12.21 19:46, Zuletzt geändert 29.12.21 20:38 (uscheswoi_82)
А в Си++ так

У них (у переменных s и s2) даже адреса разные:

#include <iostream>
#include <string>
using namespace std;
int main(int argc, char** argv) {
    string s = "Hello, World!";
    string s2 = s;
    cout << "Pointer of variable \"s\"=" << &s << "\n" << "Pointer of variable \"s2\"=" << &s2 << endl;
    cout << s2 << endl;
    s = "";
    cout << s2 << endl;
}


Результат:

Pointer of variable "s"=0x23fe30
Pointer of variable "s2"=0x23fe20
Hello, World!
Hello, World!

--------------------------------
Process exited after 0.02382 seconds with return value 0
Drücken Sie eine beliebige Taste . . .
Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#60 
1 2 3 4 alle