- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
public string define(string content)
{
int till;
char[] CharArr = content.ToCharArray();
for (int i = 0; i < CharArr.Length; i++)
{
if (CharArr[i] == 'i')
{
till = i;
}
}
string Re = content.Substring(0,till);
return Re;
}
pushistayapodmyshka 18.06.2015 12:00 # 0
Lure Of Chaos 18.06.2015 12:27 # 0
TarasB 18.06.2015 13:03 # +1
Stertor 18.06.2015 17:08 # −1
roman-kashitsyn 18.06.2015 17:25 # +1
Семён, перелогиньтесь
guest 19.06.2015 18:08 # −1
roman-kashitsyn 19.06.2015 18:20 # 0
guest 19.06.2015 19:27 # 0
bormand 19.06.2015 19:30 # 0
https://ideone.com/3eXiXG
kegdan 19.06.2015 20:01 # 0
https://ideone.com/LsZpBh
А как дела с int[]?
guest 19.06.2015 20:31 # 0
new int[42] -- дефенишен, создаюший в память массив из 42х элементов.
чем int[] отличается от MySuperClass?
new int[] = new MySuperClass()
guest 19.06.2015 21:34 # 0
TarasB 22.06.2015 15:37 # 0
guest 19.06.2015 20:25 # −1
1) примитивы (в ноль и false)
2) филды объектов (в нул)
Таким образом становится понятно что неинициализированная переменная бывает только в одном случае: когда это автоматическая переменная, указывающая на объект (иными словами когда на стеке создается указатель на какой-то объект в куче). Его-то и надо инициализировать.
Кстати, о "низкоуровневом скаме": в OBJC при использовании ARC _все_ указатели указывают на nil, если не инициализированы. Так что данглинг поинтеры "указывающие вникуда" там не бывают.
LispGovno 22.06.2015 15:01 # +1
ты написал горы текста хуйни, а он всего одно предложение.
guest 23.06.2015 01:14 # −2
TarasB 22.06.2015 15:38 # +1
guest 23.06.2015 01:14 # −1
guest 23.06.2015 01:15 # −1
guest 19.06.2015 19:33 # 0
bormand 19.06.2015 19:34 # +1
1024-- 19.06.2015 20:04 # 0
guest 19.06.2015 20:27 # 0
"new int[4]" создает массив о четырех элементах в куче и кладет туда нули.
Так что всё там прекрасно инициализировано.
[code]
for (int i : new int[255]) {
System.out.println(i); // ОЧЕ много нолей
}
[code]
В языках с автоматическим управлением памятью не бывает данглинг поинтеров
roman-kashitsyn 19.06.2015 20:35 # 0
Тарас говорил про переменную till, которая живёт на стеке.
guest 19.06.2015 20:38 # −1
я отвечал предыдущему оратору, который говорил про int[].
а тарасовый высер я прокомментировал выше: int это примтив, его не надо инициализировать, он автоматически инициализируется нолем.
если бы это было не так, то код бы не скомпилировался
пожалуйста, не нужно рассуждать о том, в чем ты не силен. Ты выглядишь глупо.
Неинициализированные инты у них в C#, бля.
roman-kashitsyn 19.06.2015 21:20 # 0
А ты думаешь он компелируется?
> int это примтив, его не надо инициализировать, он автоматически инициализируется нолем.
В твоих влажных фантазиях. Из языков, что я знаю, только D так делает.
guest 19.06.2015 22:17 # −1
Не много ты, видать, языков знаешь.
Так делает:
1) сишечка и её детки (кресты, обжс итд)
2) практически все скриптовые языки
guest 19.06.2015 22:21 # 0
А вот в скриптовых ты прав: инициализируется. Но роман скриптовых не знает
roman-kashitsyn 19.06.2015 23:28 # 0
Знаю, и потому люто их ненавижу.
guest 19.06.2015 23:36 # +1
roman-kashitsyn 20.06.2015 00:24 # 0
В нашей уютной компании пишут в основном на C++ и пистоне. На жавке и скалке изредка, бэкэнд-сервисы.
guest 20.06.2015 00:28 # 0
roman-kashitsyn 20.06.2015 08:58 # 0
Где твоя логика, гест?
"в основном пишут на C++" означает "не используют жаву"?
"используют жаву" означает "на ней пишет каждый"?
kegdan 20.06.2015 09:09 # +1
Зачем ты с ним споришь?
guest 19.06.2015 22:23 # 0
guest 19.06.2015 22:44 # 0
var a; /*Тут переменная инициализирована undefined */
alert(a);
"скриптовые языки" неформальное название языков без статической типизации, для которых основными реализациями являются интерпретаторы.
Ну вот JS хороший пример. Хотя практически ни в каком из этих языков нет декларации переменной отдельно от дефинишена (в пайтоне например это вообще не возможно впринципе). JS исключение.
guest 19.06.2015 22:50 # 0
Ну в перле есть еще объявление переменной. Но да, во всех языках со сборкой мусора, если переменную можно объявить без определения - ее значение будет определено без всяких ub.
guest 19.06.2015 22:54 # 0
в случае компиляции каждый модуль сначала компилируется , и только затем может быть загружен (ну или слинкован статически). В случае инетпретации шага "скомпилировать все модули" не существует.
В этом смысле пистончик инетпретируемый. Хотя ты конечно прав: ".pyc" файлы никто не отменял
guest 19.06.2015 23:00 # 0
Так, ARC гарантирует что все указатели на объекты указывают либо на валидный объект в памяти, либо на nil.
guest 19.06.2015 23:04 # 0
guest 19.06.2015 23:07 # 0
guest 19.06.2015 23:36 # 0
guest 19.06.2015 23:54 # 0
поскольку objc это надстройка над сишечкой, то когда ты делаешь так
GKGovno *govno;
ты просто создаешь на стеке указатель на GKGovno и ничем его не заполняешь, и получаешь висячий указатель.
Но если у тебя в шланге включен ARC, то эта штука начнет явно указывать на nil (алиас для NULL).
guest 19.06.2015 23:37 # 0
guest 14.11.2015 13:55 # 0
guest 20.11.2015 07:32 # 0
guest 24.11.2015 09:41 # 0
roman-kashitsyn 19.06.2015 23:27 # +1
Много, видать, языков ты думаешь, что знаешь.
> сишечка и её детки
При размещении на стеке - ни си, ни плюсы не проинициализируют int. Кресты инициализируют объекты с дефолтными конструкторами, но речь-то о примитивах.
> практически все скриптовые языки
Я имел в виду языки с нормальной явной типизацией.
> только D так делает.
ещё Go
guest 20.06.2015 00:01 # 0
Люблю формальную, научную терминологию.
Статическая типизация более нормальная, чем динамическая.
roman-kashitsyn 20.06.2015 00:21 # 0
> Статическая типизация более нормальная, чем динамическая.
Статическая и динамическая - это не формальная и уж тем более не научная терминология. Чувствую, скоро придёт @wvxvw и начнутся стены текста.
guest 20.06.2015 00:25 # +1
Уныле высеры wvxvw про то что "статической типизации не существует" мы уже читали. wvxvw взял конкретный кейс, к которому это понятие не применимо и сделал вывод что этого понятия не существует.
Ему уже объясняли тут, что в таком случае даже понятия "север" не существует, потому как на полюсе севера нет.
Ну и уж конечно особенно забавно, что автор выражения "нормальная типизация" рассказывает мне про терминологию.
roman-kashitsyn 20.06.2015 00:29 # 0
Если я смогу определить тип переменной в питоне, не запуская интерпретатор пистона, в пистоне будет статическая типизация?
Если я в жавке написал фабрику, которая возвращает объект, точный тип которого неизвестен, стала ли жавка динамической?
guest 20.06.2015 00:34 # 0
2) ты видимо совсем не знаешь джавы. В джаве ты должен явно указать тип любой переменной (будь то указатель на объект или нет), и в случае фабрики ты должен явно указать тип возвращаемого ей значения. Разумеется, ты можешь вернуть подтип, однако же если результат вызова фабрики ты присваиваешь переменной, то тип этой переменной также должен быть определен.
Итого: в джаве для любой переменной (и любого выражения) всегда явно указан тип (ну или его можно вывести) без запуска программы.
В пайтоне, в общем случае, это не так.
guest 20.06.2015 01:30 # +1
roman-kashitsyn 20.06.2015 08:56 # 0
Т.е. в жавке нельзя читать json с диска? А ObjectStream не сможет превращать байты в объекты с очень точным типом Object?
guest 20.06.2015 10:08 # +2
kegdan 20.06.2015 11:00 # 0
Статическая типизация - проводится проверка типов во время компиляции и говориться валиден ли код
Динамическая - код выполняется в любом случае, если будет найдено несоответствие типов - будет брошено исключение
roman-kashitsyn 20.06.2015 14:05 # 0
Кегги, помоги, я запутался Конпелируется в жабе, но бросает исключение :(
kegdan 20.06.2015 14:53 # 0
kegdan 20.06.2015 16:00 # 0
roman-kashitsyn 22.06.2015 15:33 # 0
Если язык имеет и статическую, и динамическую проверку типов, то относить его к какой-то одной категории, кмк, неправильно.
Разве что судить по принципу "всё, что не может в статику - динамическое, всё, что может - статическое", но это как-то странно.
P.S. Если написать компилятор пистона с невпупенным flow-analyzer-ом, который выводит типы сквозь границы модулей и реджектит код без нужных проверок, станет ли пистон статическим? Кстати, я слышал о подобных идеях в контексте построения IDE для жабоскриптов.
kegdan 22.06.2015 16:02 # 0
roman-kashitsyn 22.06.2015 17:24 # 0
В жабе есть на уровне JVM (инструкция invokedynamic) для ускорения скриптовых языков, но нет на уровне языка Java.
В скалке есть сахарок для dynamic
3_14dar 22.06.2015 17:45 # 0
Такие попытки есть (pycharm), но, во-первых, оно жутко тормозное даже на фоне свежих мелкомягких ide (а жабоебские иде как ни странно вообще отдыхают), во-вторых, оно бессильно если данные приходят извне.
guest 22.06.2015 23:12 # 0
spam = 'eggs' if user == '3_14dar' else 42
ну и какой тут тип?
В джаве так нельзя.
roman-kashitsyn 22.06.2015 23:53 # 0
Эффективно можно считать, что в питоне у всех объектов есть общая база, вроде жабьего Object - PyObject. Вот такого статического типа и будет spam. Динамический тип будет либо строка, либо число.
> В джаве так нельзя.
ok. Чего ещё нельзя в джаве?
3_14dar 23.06.2015 00:50 # 0
Как-то летели Холмс с Ватсоном на воздушном шаре. И заснули.
Просыпаются над какой-то незнакомой местностью, видят - внизу какой-то
мужик коров пасет. Снизились они и спрашивают мужика:
- Скажите, сэр, где мы находимся?
(долго думал)- На воздушном шаре.
- Спасибо, сэр! - и поднялись вверх. Холмс задумчиво говорит:
- Интересная местность, Ватсон! Программист пасет коров!
- Но, Холмс, с чего вы взяли, что он программист?
- Это элементарно! Во-первых, он долго думал над ответом. Во-вторых, его
ответ был абсолютно точен. И самое главное - абсолютно бесполезен!
kegdan 23.06.2015 10:47 # 0
3_14dar 23.06.2015 00:52 # 0
guest 23.06.2015 01:11 # 0
3_14dar 23.06.2015 01:23 # 0
guest 23.06.2015 01:28 # 0
3_14dar 21.06.2015 16:14 # 0
bayan 14.12.2016 02:12 # 0
Сёма, в джаве и так есть динамическая типизация
Dynamic type checking is the process of verifying the type safety of a program at runtime. Implementations of dynamically type-checked languages generally associate each runtime object with a "type tag" (i.e. a reference to a type) containing its type information
guest 20.06.2015 01:29 # +1
Только не это. Нееет! Лучше уж политсрач или гоатсе.
TarasB 22.06.2015 15:40 # +1
guest 22.06.2015 23:07 # 0
А все остальные языки или кладут туда мусор, или вовсе не компилируются (обычно не компилируются ЯПы с автоматическим управлением памяти)
guest 23.06.2015 01:11 # 0
guest 14.11.2015 15:33 # 0
guest 20.11.2015 07:35 # 0
guest 24.11.2015 09:43 # 0
guest 14.11.2015 15:59 # 0
guest 20.11.2015 07:36 # 0
guest 20.11.2015 15:09 # 0
guest 24.11.2015 09:43 # 0
guest 19.06.2015 21:33 # 0
bormand 19.06.2015 22:06 # 0
guest 19.06.2015 22:08 # 0
guest 19.06.2015 22:14 # 0
guest 19.06.2015 22:15 # 0
guest 19.06.2015 22:24 # 0
это инициализация переменной массивом без указания содержимого.
guest 19.06.2015 22:39 # 0
Точно так же как если ты напишешь
MyArray arr = new MyArray(), то все поля класса MyArray заполнятся нулями/нулами
guest 19.06.2015 22:51 # 0
bayan 14.12.2016 02:11 # 0
Stertor 20.06.2015 20:29 # +1
TarasB 22.06.2015 15:43 # +1
http://govnokod.ru/18357#comment290122
Stertor 22.06.2015 15:45 # 0
TarasB 22.06.2015 15:51 # +3
3_14dar 22.06.2015 17:46 # 0
>Гумно без гц
Все нормально
lobjana 18.06.2015 14:42 # 0
content = content.Substring(0, indexOfElement);
guest 19.07.2016 07:30 # 0
bool bFind = false;
for(int idx = 0; idx < content.length; idx++)
{
if(content[idx] == 'i') {
bFind = true;
break;
}
re += content[idx];
}
return bFind? re : "";
bayan 14.12.2016 02:10 # 0